'

Кастомизация генераторов в Symfony 1.3/1.4. Управление функционалом и структурой плагинов.

Понравилась презентация – покажи это...





Слайд 0

Кастомизация генераторов в Symfony 1.3/1.4. Управление функционалом и структурой плагинов. Николай Зык (relo_san) relo.san@gmail.com


Слайд 1

Краткое содержание: зачем нужна генерация? базовые возможности Symfony как сделать плагин универсальнее генерация моделей, форм, модулей удобное конфигурирование


Слайд 2

Зачем нужна генерация?


Слайд 3

Зачем нужна генерация? увеличение скорости разработки увеличение гибкости проекта «кеширование» кода


Слайд 4

Основные направления генерации в Symfony генерация моделей и форм генерация модулей генерация пустых структур


Слайд 5

Шаблоны генераторов можно найти тут: lib/plugins/sfDoctrinePlugin/data/generator/ lib/plugins/sfPropelPlugin/data/generator/ Что они позволяют делать: менять методы в классах форм/фильтров менять шаблоны отображения в модулях менять методы контроллеров в модулях менять конфигурацию и хелперы модулей


Слайд 6

Сами генераторы лежат здесь: lib/plugins/sfDoctrinePlugin/lib/generator/ lib/plugins/sfPropelPlugin/lib/generator/ Что они позволяют делать: изменить логику генерации форм изменить структуру наследования изменить элементы (например виджеты)


Слайд 7

Как сделать плагин универсальнее? гибкое управление моделями (вкл/выкл) произвольные внешние связи изменение моделей, по возможности без изменения кода выборок управление плагином «из одной точки»


Слайд 8

Управление генерацией моделей включить только необходимое в проекте отключить лишние поля и бихевиоры добавить новые поля, бихевиоры, связи


Слайд 9

Практически это должно выглядеть примерно так: lib/config/YourPlugin/model.yml: enabled_models: - ‘Model_1’ - ‘Model_2’ models: Model_1: disabled_relations: [‘RelationName’] disabled_columns: [‘anonce’,***] relation: NewRelation: ***


Слайд 10

При этом мы можем задать общие для всех моделей настройки примерно так: lib/config/model.yml: disabled_behaviors: - ‘I18n’ options: collate: ‘utf8_unicode_ci’ charset: ‘utf8’ И нам не придется указывать это в конфигах моделей плагинов.


Слайд 11

Чтобы плагин был действительно гибким, выборки должны автоматически адаптироваться под изменение схемы данных. Для этого добавляется серия методов в базовый класс таблицы, позволяющая управлять: набором полей в выборках допустимыми джойнами


Слайд 12

Управление генерацией форм и фильтров управление формами (вкл/выкл) смена виджетов/валидаторов и их опций настройки форм (авто embed I18n, формат имени, лейблов и сообщений и т.д.)


Слайд 13

Практически это должно выглядеть примерно так: lib/config/YourPlugin/model.yml: disabled_forms: - ‘Model_1’ disabled_filters: - ‘Model_1’ forms: Model_2: field_name: widget: ‘yourCustomWidget’ other_field_name: false


Слайд 14

Настройки по умолчанию для плагина вы можете задать в конфиге плагина: yourPlugin/config/model.yml: enabled_forms: - ‘Model_1’ forms: Model_2: field_name: false Это позволит включить в плагине по-умолчанию самое необходимое, чтобы не указывать одно и тоже в каждом проекте.


Слайд 15

Управление генерацией модулей зависимость от изменения в модели выбор типа UI и темы управление вложенностью модулей управление доступом поддержка UI в виде клиентских приложений на Sencha (ExtJS), Adobe AIR


Слайд 16

Как и в случае с моделями, мы конфигурируем модуль примерно так: lib/config/YourPlugin/module.yml: all: #all apps or appname Module1: child: module: ‘Module2’ key: ‘category_id’ label: ‘label1’ filter: false i18n_catalogue: ‘catalogue1’


Слайд 17

И для всех модулей указываем общие параметры: lib/config/module.yml: all: #all apps or appname UI: ‘jquery’ theme: ‘default’ actions_base_class: ‘dinActions’ ipp: 20 #items per page


Слайд 18

Текущая версия плагина поддерживает jQuery UI, сортировку i18n полей в списках и другие мелкие доработки.


Слайд 19

В самом ближайшем будущем планируется имплементация существующих расширений модулей (например древовидные списки).


Слайд 20

Как не заблудиться в конфигурационном лесу?


Слайд 21

Структура конфигурации генераторов: /lib/config/model.yml /lib/config/module.yml plugins/yourPlugin/config/model.yml plugins/yourPlugin/config/module.yml /lib/config/yourPlugin/model.yml /lib/config/yourPlugin/module.yml Конфиги указаны в порядке перекрытия.


Слайд 22

Возможности, поддерживаемые конфигурацией: лаконичный набор команд поддержка обоих принципов: «все включено» и «все выключено» генерация пустой структуры конфигов ограниченная валидация


Слайд 23

Опубликованные плагины: Общие надстройки над фреймворком: svn://dinecat.com/dinSymfonyExtraPlugin Надстройки над Doctrine: svn://dinecat.com/dinDoctrineExtraPlugin Генерация административной панели: svn://dinecat.com/dinAdminStdPlugin


Слайд 24

Постепенно мной будут публиковаться также другие плагины, в том числе «универсальные» плагины с общим для большинства проектов функционалом. Плагины публикуются под лицензией MIT. Я приглашаю всех, заинтересованных в разработке этих и других плагинов, к совместной работе в этом направлении.


Слайд 25

В ближайшее время в сети появится два ресурса, использующих эти плагины: http://maitavr.org/ Ассоциация разработчиков http://aristotel.ua/ Благотворительный аукцион


Слайд 26

Доклад подготовил: Николай Зык (relo_san) relo.san@gmail.com http://dinecat.com/ http://relo-san.com/


×

HTML:





Ссылка: