Yii начало
Дорогие читатели, здесь я расскажу Вам, как знакомлюсь с фрэймворком Yii. А делаю это потому, что все не так уж просто, как написано в руководстве пользователя.
На всякий случай, вот русский вариант — http://www.yiiframework.com/doc/guide/1.1/ru/index
Сначала я скачал Yii и положил корень сайта, директорию yii я сразу переименовал в YiiRoot, т.к. в руководстве все примеры именно с таким названием, мне показалось так действительно будет проще. Первым делом на странице /YiiRoot/requirements/index.php я посмотрел таблицу требований и их соответствия хостинга. Ну, вроде красных (failed) замечаний нет и я решил, поехали.
1.пытался установить testdrive — это типа тест сайт в директории testdrive, в документации сказано сделать так:
cd WebRoot
php YiiRoot/framework/yiic.php webapp testdrive
нихрена не вышло, почему:
- YiiRoot — это полный путь к Yii, он у меня был конечно своим /usr/home/yii.yapro.ru
- в корне сайта php-файлам запрещено создавать директории (это весьма правильно), поэтому testdrive не создавался, пришлось создать самому.
2. не могу авторизоваться в /testdrive/index.php?r=gii получал ошибку:
Error 403
You are not allowed to access this page.
воспользовался советом со страницы http://yiiframework.ru/forum/viewtopic.php?f=3&t=902 и в файле /testdrive/protected/config/main.php сделал так:
‘ipFilters’=>array(),
3. авторизовался и меня перекинуло на /testdrive/index.php?r=gii/default/index в списке выбрал
Model Generator
меня перекинуло на страницу /testdrive/index.php?r=gii/model где я получил ошибку:
PHP warning
include(PDO.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory
почитал, оказывается PDO дополнительная PHP-библиотека, прав доступа на установку библиотек у меня нет.
Решил скачать PDO.php отдельно. Зашел на страницу http://www.phpclasses.org/package/2572-PHP-PDO-database-abstraction-interface-for-PHP-4.html и скачал:
PDO.class.php — переименовал в PDO.php
PDO_sqlite.class.php
PDOStatement_sqlite.class.php
и положил все файлы в папку /YiiRoot/framework/
Снова зашел на страницу /testdrive/index.php?r=gii/model и увидел пустую страницу. Удалил залитые файлы.
Еще погуглил и нашел такое расширение http://www.yiiframework.com/extension/phppdo/ обсуждение тут http://dbhelp.ru/install-yii-phppdo/page/
Скачал, залил PHPPDO в папку /testdrive/protected/extensions а в файле /testdrive/protected/config/main.php заменил это:
‘db’=>array(
‘connectionString’ => ‘sqlite:’.dirname(__FILE__).’/../data/testdrive.db’,
),
на это:
‘db’=>array(
‘class’=>’application.extensions.PHPPDO.CPdoDbConnection’,
‘pdoClass’=>’PHPPDO’,
),
Снова зашел на страницу /testdrive/index.php?r=gii/model и увидел:
CDbException
CDbConnection.connectionString cannot be empty.
Получается PHPPDO не хочет работать с sqlite.
Ладно, захожу в MySQL, создаю базу данных lebnik_yii и выполняю в ней запросы, которые прописаны в файле /testdrive/protected/data/schema.mysql.sql
Теперь в файле /testdrive/protected/config/main.php меняю это:
‘db’=>array(
‘class’=>’application.extensions.PHPPDO.CPdoDbConnection’,
‘pdoClass’=>’PHPPDO’,
),
на это:
‘db’=>array(
‘class’=>’application.extensions.PHPPDO.CPdoDbConnection’,
‘pdoClass’=>’PHPPDO’,
‘connectionString’ => ‘mysql:host=localhost;dbname=lebnik_yii’,
‘username’ => ‘Имя пользователя для подключения к базе данных lebnik_yii’,
‘password’ => ‘Пароль подключения к базе данных lebnik_yii’,
‘emulatePrepare’=>true, // needed by some MySQL installations
),
Снова захожу на страницу /testdrive/index.php?r=gii/model и вижу все, как написано на странице http://www.yiiframework.com/doc/guide/1.1/ru/quickstart.first-app#sec-5
Дальше можно посмотреть видео на сайте http://www.remchi.ru/
p.s. Логи ошибок можно посмотреть в файле /testdrive/protected/runtime/application.log
Источник: yapro.ru