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

Leave a Reply

You must be logged in to post a comment.