W części tej napiszemy jak utworzyć szkielet aplikacji, który będzie stanowić nasz punkt startowy. Dla uproszczenia, zakładamy, że główny katalog naszego serwera to /wwwroot
a odpowiadający mu adres URL to http://www.example.com/
.
Na samym początku zainstalujemy framework Yii. W tym celu pobierz plik z wydaniem Yii (wersja 1.1.1 lub nowsze) spod adresu www.yiiframework.com i rozpakuj go do katalogu /wwwroot/yii
. Upewnij się jeszcze raz, że istnieje folder /wwwroot/yii/framework
.
Wskazówka: framework Yii może zostać zainstalowany w dowolnym miejscu systemu plików, niekoniecznie w folderze sieci Web. Jego katalog
framework
zawiera cały kod frameworku i jest jedynym wymaganym folderem frameworku podczas wdrażania aplikacji napisanej w Yii. Pojedyncza instalacja Yii może być używana przez wiele aplikacji.
Po zainstalowaniu Yii, otwórz okno przeglądarki i wpisz adres URL http://www.example.com/yii/requirements/index.php
. Pokaże on dostarczoną wraz z Yii stronę pozwalającą sprawdzić wymagania. Dla naszego blogu, poza minimalnymi wymaganiami stawianymi Yii, potrzebujemy włączyć rozszerzenia PHP pdo
oraz pdo_sqlite
by móc używać bazy danych SQLite.
Następnie przy użyciu narzędzia yiic
utworzymy szkielet aplikacji w katalogu /wwwroot/blog
. Narzędzie yiic
jest narzędziem wiersza poleceń, dostarczonym wraz z wydaniem Yii. Może zostać użyte do wygenerowania kodu aby ograniczyć wykonywanie pewnych powtarzających się zadań.
Otwórz okno wiersza poleceń oraz wywołaj następującą komendę:
% /wwwroot/yii/framework/yiic webapp /wwwroot/blog Create a Web application under '/wwwroot/blog'? [Yes|No]y ......
Wskazówka: W celu wykorzystania narzędzia
yiic
w sposób pokazany powyżej program CLI PHP musi się znajdować w ścieżce poleceń. Jeśli tak nie jest, następująca komenda może zostać użyta w miejsce powyższej:ścieżka/do/php /wwwroot/yii/framework/yiic.php webapp /wwwroot/blog
Aby wypróbować aplikację, którą właśnie stworzyliśmy, otwórz przeglądarkę i przejdź do adresu http://www.example.com/blog/index.php
. Powinniśmy zobaczyć, że nasza szkieletowa aplikacja posiada już cztery w pełni funkcjonalne strony: stronę domową, stronę o nas, stronę kontaktową oraz stronę logowania.
W dalszej części, pokrótce opiszemy co znajduje się w właśnie stworzonym szkielecie aplikacji.
Mamy plik skryptu wejściowego /wwwroot/blog/index.php
, który posiada następującą zawartość:
$yii='/wwwroot/framework/yii.php'; $config=dirname(__FILE__).'/protected/config/main.php'; // usuń następującą linię jeśli pracujesz w trybie produkcyjnym defined('YII_DEBUG') or define('YII_DEBUG',true); require_once($yii); Yii::createWebApplication($config)->run();
Jest to jedyny skrypt, do którego internauci mają dostęp. Skrypt najpierw załącza plik inicjalizacyjny yii.php
. Następnie tworzy instancję aplikacji z określoną konfiguracją i uruchamia aplikację.
Mamy również główny katalog aplikacji /wwwroot/blog/protected
. Większość naszego kodu i danych znajdzie się w tym katalogu, dlatego więc nie powinien on być udostępniony dla internautów. Dla serwera httpd Apache, umieszczamy w tym miejscu plik .htaccess
z następującą zawartością:
deny from all
Dla pozostałych serwerów informacje o tym jak ochronić katalog przed dostępem z zewnątrz przez internautów można znaleźć w odpowiadających im podręcznikach.
Aby pomóc zrozumieć w jaki sposób Yii działa, opiszemy ogólnie przebieg działania aplikacji w naszym szkielecie aplikacji podczas gdy użytkownik żąda dostępu do strony kontaktowej:
http://www.example.com/blog/index.php?r=site/contact
;/wwwroot/blog/protected/config/main.php
;site
oraz akcję contact
(metoda actionContact
w /wwwroot/blog/protected/controllers/SiteController.php
);site
pod postacią instancji SiteController
a następnie uruchamia go;SiteController
wykonuje akcję contact
poprzez wywołanie metody kontrolera actionContact()
;actionContact
generuje internaucie widok o nazwie contact
. Wewnętrznie dzieje się to poprzez załączenie pliku widoku /wwwroot/blog/protected/views/site/contact.php
i osadzeniu wyniku w pliku układu /wwwroot/blog/protected/views/layouts/column1.php
.
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.