Перед тем, как приступить к генерации кода, необходимо ознакомиться с разделом "
Структура приложения". Начиная с темы "Обзор" и заканчивая темой "Расширения", чтобы иметь представление о том, как устроен Yii2, как протекает жизненный цикл, какие основные точки участвуют в обработке запроса.
Самым интересным генератором (я так думаю) является CRUD-генератор (create, read, update, delete). Для начала
создадим миграцию, с помощью которой создадим таблицу posts (id, title, content, created_at, updated_at).
Зайдем в режим mysql и убедимся в том, что таблица существует (site название БД и имя пользователя).
mysql -u site -p (после команды надо ввести пароль)
use site (выбор базы, с которой будем работать)
show tables; (список существующих таблиц)
show columns from post; (список столбцов (полей) в таблице)
exit (корректно выходим)
Если все в порядке, переходим на страницу генератора модели
http://site.dev/gii/model и в полях указываем имя таблицы и название класса. Нажимаем кнопку Preview (при необходимости изучаем информацию), а затем Generate.
Если скажет, что не может создать файл, то надо будет выставить права на директорию. Так как мы генерируем файлы через веб-интерфейс, то и пользователь будет www-data (это nginx), а у него нет прав на запись в эту директорию.
sudo chmod 0777 frontend/models/ (находимся в корне проекта)
После создания модели (файла с классом модели) переходим на страницу CRUD-генератора
http://site.dev/gii/crud и указываем сгенерированный файл модели, заполняем поля для создания файла класса модели для поиска, файла класса контроллера и файлов представления. Нажимаем кнопку Preview, смотрим какие файлы будут созданы и создаем их. Если не может создать файлы, выставляем права на frontend/controllers/ и frontend/views/
В пути к файлам вместо app указываем frontend
В созданных файлах необходимо изменить namespace и пути в use согласно стандарту PSR-4, если вдруг вы их указали неправильно при генерации.
Созданные файлы:
- frontend\controllers\PostController.php
- frontend\models\Post.php
- frontend\models\PostSearch.php
- frontend\views\post\*
Грубо говоря в namespace указываем путь, по которому располагается наш файл. Для PostController.php
namespace frontend\controllers; для Post.php
namespace frontend\models;В use указываем путь и название файла без .php (по стандарту имя класса должно совпадать с именем файла).
Если все правильно сделали, то заходим по адресу
http://site.dev/post и видим страницу с неслабым функционалом. Т.к. в таблице у нас нет еще ни одной записи, то функционал мы применить не можем. Поэтому создаем несколько записей (5-6) и тестируем результат волшебника gii.
С помощью генератора мы создали страницу со списком записей таблицы post (плюс пагинация), страницу добавления новой записи, страницу редактирования, страницу просмотра, возможность удаления записи. А также доступна сортировка по одному из полей и фильтрация по нескольким полям (поиск).
Генераторы кода не рекомендуется использовать (увлекаться генерацией кода), потому что будет сложно понять механизм работы, но мне кажется, что куда проще разобраться с готовым куском кода (тем более он не такой уж и объемный). CRUD-генератор в основном используется для создания страниц в административной части (backend в коре проекта, но об этом позже), а вот генератор моделей нам понадобится довольно часто.
Продолжаем читать документацию по yii2.
Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
|