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

comments

Comments

Leave a Reply

You must be logged in to post a comment.