Вторая версия php-фреймворка yii, как и первая, включают в себя генератор кода gii. Этот генератор способен создавать рабочие модели, контроллеры и представления для crud (создания, просмотра, изменения и удаления записей) функционала, на основе структуры базы данных, а так же заготовки модулей и контроллеров, дабы помочь разработчику.
Генератор gii специально сделан максимально прозрачным в настройке шаблонов и каждый может изменить стандартные или создать свои шаблоны генерации моделей и контроллеров для избавления от рутинной работы.
К настоящему времени, в открытом доступе находятся несколько пользовательских наборов шаблонов для gii и schmunk42/yii2-giiant — как раз, один из них. Рассмотрим его подробнее.
Giiant способен генерировать модели и crud с поддержкой связей между таблицами данных и сложным интерфейсом. Основной целью этого проекта стало объединение большого количества полезных наработок из других проектов, таких как gtc, giix awecrud и других в одном функциональном расширении.
Главные особенности
Генератор моделей
- создает базовый класс модели и класс для кастомизации модели;
- префиксы таблиц могут быть исключены из имен классов (не зависит от настроек подключения к базе данных);
Генератор crud
- файлы моделей, представлений и контроллеров могут быть расположены в подкаталогах;
- горизонтальная и вертикальная разметки форм;
- настраиваемый класс кнопок (параметр App Class в разделе Action Button Class);
- поля ввода, атрибуты, количество столбцов и связи легко настраиваются;
- функция callback может быть встроена во все виды полей ввода, атрибутов и столбцов (использована технология dependency injection);
Провайдеры
- CallbackProvider — универсальный провайдер, позволяющий модифицировать поля ввода, атрибуты или столбцы с использованием гибких callback функций;
- RelationProvider — создает код для обработки связей данных ( ссылки, выпадающие списки и так далее;
- EditorProvider — создает продвинутый текстовый редактор, вроде Ckeditor, в качестве виджета для ввода текста;
- DateTimeProvider — создает поля ввода даты и времени.
Как использовать новые шаблоны gii
Достаточно подключить новый генератор в настройках модуля gii:
$config['modules']['gii'] = [ 'class' => 'yii\gii\Module', 'allowedIPs' => ['127.0.0.1'], 'generators' => [ // Имя генератора 'giiant-model' => [ // Класс генератора 'class' => 'schmunk42\giiant\model\Generator', // Настройки шаблонов 'templates' => [ // Имя шаблона => путь к шаблону 'mymodel' => '@app/giiTemplates/model/default', ] ] ], ];
Использование провайдеров для кастомизации
Часто бывает необходимо изменить обычное поведение, например, поля ввода под нужды проекта. Например расширенное редактирование, загрузка или выбор файлов, ввод сложного значения с запросом его в модальном окне, получение данных через ajax.
При использовании giiant можно автоматически генерировать разные расширенные типы полей по определенным условиям. Для лучшего понимания, можно обратиться в нескольким готовым провайдерам.
Подробнее о генераторе кода giiant для yii2 читайте на его хабе.
Какая замечательная штука. Спасибо большое!