Pull to refresh

Автоматическая генерация кода в Yii

Reading time2 min
Views18K
Привет, %username%! Несколько лет назад я познакомился с замечательным фреймворком Yii и с тех пор как только у меня появляется возможность вести проект на нем — я дерусь берусь за нее.

Одной из крутых фич которую я очень люблю, это инструмент Gii, который начиная с версии 1.1.2 входит в состав фреймворка. Сейчас я хочу поговорить сторонних модулях основанных на нем.

Gii «Из коробки» генерирует достаточно функциональный код, часто когда нужно создать мелкую фичу приходится очень мало менять. Но что если нам нужно больше возможностей? К примеру добавить поддержку нескольких языков, или изменит стиль генерируемого кода?
Есть 2 способа расширения: Изменять существующие шаблоны и создавать свои генераторы (ну или использовать уже готовые соответственно). На базе этих возможностей были созданы достаточно интересные продукты для комфортной работы с авто генерацией кода.

Giix


Страница расширения
Пожалуй мой самый любимый генератор. Генерирует для моделей базовый класс с кодом и отдельно пустой класс модели с унаследованием от базового. Таким образом при изменении базы можно сделать пере-генерацию без затирания своего кода.

Также генерирует представление с учетом связей что очень часто экономит тонну времени.

Основные фичи

  • Улучшенная и упрощенная i18n
  • Поддержка связей HAS_MANY и MANY_MANY.
  • Встроенная поддержка для сохранения связей MANY_MANY при помощи нового метода GxActiveRecord::saveWithRelated.
  • Правильная обработка связанных атрибутов моделей, рендеринг соответствующих полей формы основываясь на типе связей.
  • Удобная структура моделей для дальнейшей работы


Практика показала что данный генератор, при правильно спроектированной бд генерирует очень много нужного кода.

Manymanyajaxcrudadmin


Страница расширения
Достаточно крутая штука. Предоставляет шаблон для генерации кода с использованием ajax в фронтенде для моделей со связками MANY_MANY. Удобно когда нужно создать сущность к примеру «продукт» или «категория».

К примеру для продукта мы используем обычный CListView или CGridView а для категорий можем использовать nestedset, редактируемые при помощи плагина jstree.

Все это дело редактируется в модальных диалогах, с возможностью прикреплять файлы.
Базируется на Giix.

Заключение


Моделей и наборов шаблонов для генерации намного больше, я описал лишь те которые приходилось использовать и которые мне действительно нравятся.
Идея форка для Giix не покидает меня, есть действительно хорошие идеи по-поводу данного расширения к примеру: добавить настройку типов полей перед генерацией, настройка правил, фильтров, возможно это стоит оформить как новый модуль для yii2. Время покажет.

Это моя первая статья, до этого я умел только троллить. За троллинг и оскорбления других пользователей, ранее, прошу прощения. Советы и критику по написанию статьи прошу писать в личку, с ошибками туда-же (мой Русский плох, я знаю, работаю над этим).

Ссылки:
manymanyajaxcrudadmin
giix
Автоматическая генерация кода в Yii
Tags:
Hubs:
Total votes 40: ↑31 and ↓9+22
Comments8

Articles