Create, read, update и delete (CRUD) — четыре основных операции, при помощи
которых можно управлять данными. В нашем приложении главная
задача состоит в том, чтобы реализовать операции CRUD для записей и
комментариев. В этом разделе мы будем использовать инструмент yiic
для
выполнения этой задачи. Этот процесс также известен как scaffolding.
Откроем командную строку и выполним следующие команды:
% /wwwroot/yii/framework/yiic shell /wwwroot/blog/index.php Yii Interactive Tool v1.0 Please type 'help' for help. Type 'exit' to quit. >> model User ...... >> model Post ...... >> model Tag ...... >> model Comment ...... >> crud Post ...... >> crud Comment ...... >> exit
Информация: Некоторые установленные копии PHP могут использовать другой файл
php.ini
для PHP анализатора командной строки (CLI). В результате выполнения команд выше, Вы можете столкнуться с такими ошибками как "YiiBase::include(PDO.php): failed to open stream..." или "...could not find driver". Дважды проверьте свою конфигурацию PHP CLI, выполнив следующую команду:php -r "phpinfo();"Результат команды покажет, какой файл
php.ini
используется и какие расширения загружены. Если используется неправильный файлphp.ini
, можно использовать следующую команду, чтобы явно задать нужный файлphp.ini
:php -c php.ini /wwwroot/yii/framework/yiic.php shell /wwwroot/blog/index.php
Команды выше выполняют две задачи. Команды model
генерируют файл
класса модели для каждой таблицы базы данных.
Команды CRUD
генерируют код, необходимый операциям CRUD для
моделей Post
и Comment
.
Мы можем проверить сгенерированный код, перейдя по следующим URL:
http://www.example.com/blog/index.php?r=post http://www.example.com/blog/index.php?r=comment
Заметим, что возможности записей и комментариев, реализованные в сгенерированном
коде, полностью независимы друг от друга. При создании новой записи или
комментария, мы обязаны вводить информацию, такую как authId
и createTime
,
которая в реальном приложении должна устанавливаться программой.
Мы устраним эти проблемы на следующих этапах. На данном этапе прототип уже содержит
большинство возможностей, которые мы должны реализовать в нашем приложении.
Чтобы подготовиться к следующим этапам, давайте поближе познакомимся с
содержимым сгенерированных файлов. Все сгенерированые файлы расположены в директории
/wwwroot/blog/protected
. Для удобства мы разделяем их на
модели, контроллеры
и представления:
файлы моделей:
Models/User.php
содержит класс User
, который наследуется от
CActiveRecord и может использоваться для обращения к таблице User
;Models/Post.php
содержит класс Post
, который наследуется от
CActiveRecord и может использоваться для обращения к таблице Post
;Models/Tag.php
содержит класс Tag
, который наследуется от
CActiveRecord и может использоваться для обращения к таблице Tag
;Models/Comment.php
содержит класс Comment
, который наследуется от
CActiveRecord и может использоваться для обращения к таблице Comment
;файлы контроллеров:
Controllers/PostController.php
содержит класс PostController
, который
является контроллером, отвечающим за все операции CRUD для записей;Controllers/CommentController.php
содержит класс CommentController
,
который является контроллером, отвечающим за все операции CRUD для комментариев;файлы представлений:
views/post/create.php
— файл представления, который показывает HTML-форму
для создания записи;views/post/update.php
— файл представления, который показывает HTML-форму
для обновления записи;views/post/show.php
— файл представления, который отображает подробную
информацию поста;views/post/list.php
— файл представления, который отображает список записей;views/post/admin.php
— файл представления, который отображает записи в
таблице с административными командами.views/post/_form.php
— частичный файл представления, который отображает
HTML-форму для сбора информации о посте. Он включается в представления
create
и update
.Чтобы лучше понять, как используются файлы выше, рассмотрим, что происходит при отображении списка постов:
PostController
и выполняет его;PostController
выполняет требуемое действие list
(метод actionList()
);actionList()
делает запрос к базе данных для получения списка последних записей;actionList()
генерирует представление list
с данными записей.
Signup or Login in order to comment.