Konfiguracja aplikacji yii framework
Kilka dni temu postanowiłem, że napiszę całą serię artykułów o yii framework. W poradniku skupimy się na napisaniu swojego własnego blogu, a w dzisiejszym wpisie skonfigurujemy naszą przykładową aplikację, którą napisaliśmy w poprzednim wpisie. Zapraszam do czytania i komentowania wpisu.
Część wspólna – Common
W poprzednim poradniku poleciłem skopiować całą gotową strukturę z przykładowego projektu do katalogów aplikacji common, backend oraz frontend. Dziś usuniemy zbędne pliki i foldery z tych katalogów. Kopiowanie struktury standardowego projektu przyspiesza pracę, dlatego ją kopiujemy. Przechodzimy zatem do folderu z naszym kodem utworzonym w poprzednim poradniku. Na początku zajmiemy się folderem common.
$ cd /srv/test/protected/common
Usuwamy następujące katalogi: views, tests, runtime, migrations, messages, controllers, commands oraz wszystkie pliki .htaccess, yiic, yiic.php oraz yiic.bat
$ rm -rf views tests runtime migrations messages controllers commands
$ rm .htaccess yiic yiic.php yiic.bat
W folderze config znajduje się konfiguracja naszej aplikacji. W zależności od jej wielkości możemy ją podzielić na kilka sposobów. Zamieniamy trzecią linijkę kodu z
<!–?php
return array(
‚basePath’…..
na
<?php
$common = array(
‚basePath’…..
W naszym poradniku będę używał świetnego narzędzia jakim jest gii. Aby był włączony należy odkomentować linie w sekcji modules oraz zmienić hasło. Usuniemy klucz name naszej aplikacji ponieważ będzie on ustawiany w konfiguracji aplikacji frontend lub backend. Usuwamy zakomentowane wpisy odnośnie managera adresów oraz bazy danych. W sekcji components mamy wpisy odnośnie logowania, odkomentowujemy wpisy z CWebLogRoute i dodajemy klucz levels z wartością error, warning. Od tej chwili błędy będą nam się pojawiać na stronie. W parametrach zmieńmy adres administracyjny. Teraz zajmiemy się tworzeniem konfiguracji da konkretnej maszyny – każde środowisko ma odmienne konfiguracje – jak chociaż konfiguracje bazy danych, dlatego stworzymy sobie możliwość nadpisywania standardowych środowisk dla konkretnej maszyny. Na końcu naszego pliku konfiguracji main.php dodajemy następujące dwie linijki kodu:
$common_local_conf = require (realpath(dirname(__FILE__) . ‚/main-local.php’));
return CMap::mergeArray($common_local_conf, $common);
Tworzymy plik main-local.php i dodajemy do niego następującą konfigurację bazy danych:
<?php
return array(
‚components’ => array(
‚db’=>array(
‚connectionString’ => ‚mysql:host=NAZWA_HOSTU;dbname=NAZWA_BAZY_DANYCH’,
’emulatePrepare’ => true,
‚username’ => ‚Nazwa użytkownika’,
‚password’ => ‚Tutaj wpisujemy hasło’,
‚charset’ => ‚utf8’,
‚tablePrefix’ => ‚tbl_’,
),
), // end of components
);
Plik main-local.php możemy zapisać pod inną nazwą np. main-local.tpl i dołączyć do repozytorium kodu.
Frontend
Na samym początku pliku konfiguracyjnego protected/frontend/config/main.php dodajemy funkcje, która uprości nam tworznie ścieżek.
<?php
function _joinpath($dir1, $dir2)
{
return realpath($dir1 . ‚/’ . $dir2);
}
Aby nasza aplikacja działała poprawnie musimy skonfigurować ścieżki do folderów protected oraz runtime. Dodatkowym ułatwieniem będzie ustawienie zmiennej $homePath aby wskazywała nam na folder aplikacji. W przyszłości będziemy używać elementów wspólnych dla całej aplikacji, dlatego utworzymy sobie alias common. Alias ten będzie wskazywał folder współdzielonych elementów.
$homePath = dirname(__FILE__) . ‚/..’;
$protectedPath = _joinpath($homePath, ”);
$runtimePath = _joinpath($homePath, ‚runtime’);
$common = _joinpath(dirname($homePath . ‚/../../’), ‚common’);
Yii::setPathOfAlias(‚common’, $common);
Zamieniamy teraz linię kodu zwracającą nam tablice z konfiguracją, aby naszą konfiguracje przypisywała do zmiennej $frontend. Konfiguracje bazową zamieszczoną w protected/common/config/main.php wczytujemy do zmiennej $common_conf. Do łączenia dwóch konfiguracji używamy statycznej metody CMap::mergeArray. Na końcu pliku dodajemy :
$common_conf = require (Yii::getPathOfAlias(„common.config”) . ‚/main.php’);
return CMap::mergeArray($common_conf, $frontend);
W tym momencie musimy wyczyścić plik konfiguracyjny frontendu ze zbędnych komentarzy i z nadpisujących kluczy konfiguracji. Usuwamy klucz log, db, errorHandler oraz user z sekcji components. Odkjomentowujemy klucz urlmanager oraz usuwamy sekcję params aby nie nadpisywała nam standardowych parametrów z części common.
W tej chwili linki w naszej aplikacji wyglądają w następujący sposób:
http://test.local/index.php?r=site/index
http://test.local/index.php?r=site/page&view=about
http://test.local/index.php?r=site/contact
http://test.local/index.php?r=site/login
Kolejną rzeczą którą zmienimy są przyjazne linki, aby je zmienić zamieniamy sekcję urlmanager jak poniżej:
‚urlManager’ => array(
‚urlFormat’ => ‚path’,
‚showScriptName’ => false,
‚caseSensitive’ => true,
‚rules’ => array(
‚<controller:\w+>/page/<view:\w+>’ => ‚<controller>/page’,
‚<controller:\w+>/<id:\d+>’ => ‚<controller>/view’,
‚<controller:\w+>/<action:\w+>/<id:\d+>’ => ‚<controller>/<action>’,
‚<controller:\w+>/<action:\w+>’ => ‚<controller>/<action>’,
),
),
Od tej chwili nasze linki będą wyglądały w ten sposób:
http://test.local/site/index
http://test.local/site/page/about
http://test.local/site/contact
http://test.local/site/login
Podsumowanie
W aplikacji backend postępujemy analogicznie jak w powyższym przykładzie. Ustalamy konfiguracje dla UrlManagera oraz łączymy plik protected/common/config/main.php z plikiem konfiguracyjnym protected/backend/config/main.php za pomocą CMap::mergeArray. W tym wpisie to już wszystko. Jeżeli było coś nie jasne napisz o tym w komentarzu!
Comments