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

Содержание

Слайд 2

Краткое содержание:

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

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

Слайд 3

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

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

Слайд 4

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

увеличение скорости разработки
увеличение гибкости проекта
«кеширование» кода

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

Слайд 5

Основные направления генерации в Symfony

генерация моделей и форм
генерация модулей
генерация

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

Слайд 6

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

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

Слайд 7

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

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

Слайд 8

Как сделать плагин универсальнее?

гибкое управление моделями (вкл/выкл)
произвольные внешние связи
изменение

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

Слайд 9

Управление генерацией моделей

включить только необходимое в проекте
отключить лишние поля и

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

Слайд 10

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

Практически это должно выглядеть примерно так: lib/config/YourPlugin/model.yml: enabled_models: - ‘Model_1’ - ‘Model_2’

Слайд 11

При этом мы можем задать общие для всех моделей настройки примерно так:
lib/config/model.yml:
disabled_behaviors:
-

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

Слайд 12

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

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

Слайд 13

Управление генерацией форм и фильтров

управление формами (вкл/выкл)
смена виджетов/валидаторов и их

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

Слайд 14

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

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

Слайд 15

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

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

Слайд 16

Управление генерацией модулей

зависимость от изменения в модели
выбор типа UI и

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

Слайд 17

Как и в случае с моделями, мы конфигурируем модуль примерно так:
lib/config/YourPlugin/module.yml:
all: #all

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

Слайд 18

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

И для всех модулей указываем общие параметры: lib/config/module.yml: all: #all apps or
per page

Слайд 19

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

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

Слайд 20

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

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

Слайд 21

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

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

Слайд 22

Структура конфигурации генераторов:
/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
Конфиги указаны в порядке перекрытия.

Структура конфигурации генераторов: /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 Конфиги указаны в порядке перекрытия.

Слайд 23

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

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

Слайд 24

Опубликованные плагины:

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

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

Слайд 25

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

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

Слайд 26

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

В ближайшее время в сети появится два ресурса, использующих эти плагины: http://maitavr.org/
аукцион
Имя файла: Кастомизация-генераторов-в-Symfony-1.3/1.4.-Управление-функционалом-и-структурой-плагинов..pptx
Количество просмотров: 403
Количество скачиваний: 0