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.