SlideShare a Scribd company logo
Кастомизация генераторов в  Symfony 1.3/1.4. Управление функционалом и структурой плагинов. Николай Зык ( relo_san ) [email_address]
Краткое содержание: зачем нужна генерация? базовые возможности  Symfony как сделать плагин универсальнее генерация моделей, форм, модулей удобное конфигурирование
Зачем нужна генерация ?
Зачем нужна генерация ? увеличение скорости разработки увеличение гибкости проекта «кеширование» кода
Основные направления генерации в  Symfony генерация моделей и форм генерация модулей генерация пустых структур
Шаблоны генераторов можно найти тут: lib / plugins / sfDoctrinePlugin/data/generator/ lib / plugins / sfPropelPlugin/data/generator/ Что они позволяют делать: менять методы в классах форм/фильтров менять шаблоны отображения в модулях менять методы контроллеров в модулях менять конфигурацию и хелперы модулей
Сами генераторы лежат здесь: lib / plugins / sfDoctrinePlugin/lib/generator/ lib / plugins / sfPropelPlugin/lib/generator/ Что они позволяют делать: изменить логику генерации форм изменить структуру наследования изменить элементы (например виджеты)
Как сделать плагин универсальнее? гибкое управление моделями (вкл/выкл) произвольные внешние связи изменение моделей, по возможности без изменения кода выборок управление плагином «из одной точки»
Управление генерацией моделей включить только необходимое в проекте отключить лишние поля и бихевиоры добавить новые поля, бихевиоры, связи
Практически это должно выглядеть примерно так: lib/config/YourPlugin/model.yml: enabled_models: -  ‘Model_1’ -  ‘Model_2’ models: Model_1: disabled_relations: [ ‘RelationName’ ] disabled _ columns: [ ‘anonce’ ,***] relation: NewRelation: ***
При этом мы можем задать общие для всех моделей настройки примерно так: lib/config/model.yml: disabled_behaviors: -  ‘I18n’ options: collate:  ‘utf8_unicode_ci’ charset:  ‘utf8’ И нам не придется указывать это в конфигах моделей плагинов.
Чтобы плагин был действительно гибким, выборки должны автоматически адаптироваться под изменение схемы данных. Для этого добавляется серия методов в базовый класс таблицы, позволяющая управлять: набором полей в выборках допустимыми джойнами
Управление генерацией форм и фильтров управление формами (вкл/выкл) смена виджетов/валидаторов и их опций настройки форм (авто  embed I18n,  формат имени, лейблов и сообщений и т.д.)
Практически это должно выглядеть примерно так: lib/config/YourPlugin/model.yml: disabled_forms: -  ‘Model_1’ disabled_filters: -  ‘Model_1’ forms: Model_2: field_name: widget:  ‘yourCustomWidget’ other_field_name:  false
Настройки по умолчанию для плагина вы можете задать в конфиге плагина: yourPlugin/config/model.yml: enabled_forms: -  ‘Model_1’ forms: Model_2: field_name:  false Это позволит включить в плагине по-умолчанию самое необходимое, чтобы не указывать одно и тоже в каждом проекте.
Управление генерацией модулей зависимость от изменения в модели выбор типа  UI  и темы управление вложенностью модулей управление доступом поддержка  UI  в виде клиентских приложений на  Sencha (ExtJS ),  Adobe AIR
Как и в случае с моделями, мы конфигурируем модуль   примерно так: lib/config/YourPlugin/module.yml: all:  #all apps or appname Module1: child: module: ‘Module2’ key: ‘category_id’ label: ‘label1’ filter:  false i18n_catalogue:  ‘catalogue1’
И для всех модулей указываем общие параметры: lib/config/module.yml: all:  #all apps or appname UI: ‘jquery’ theme: ‘default’ actions_base_class: ‘dinActions’ ipp: 20  #items per page
Текущая версия плагина поддерживает  jQuery UI , сортировку  i18n  полей в списках и другие мелкие доработки.
В самом ближайшем будущем планируется имплементация существующих расширений модулей (например древовидные списки).
Как не заблудиться в конфигурационном лесу?
Структура конфигурации генераторов: /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 Конфиги указаны в порядке перекрытия.
Возможности, поддерживаемые конфигурацией: лаконичный набор команд поддержка обоих принципов: «все включено» и «все выключено» генерация пустой структуры конфигов ограниченная валидация
Опубликованные плагины: Общие надстройки над фреймворком: svn://dinecat.com/dinSymfonyExtraPlugin Надстройки над  Doctrine :  svn://dinecat.com/dinDoctrineExtraPlugin Генерация административной панели: svn://dinecat.com/dinAdminStdPlugin
Постепенно мной будут публиковаться также другие плагины, в том числе «универсальные» плагины с общим для большинства проектов функционалом. Плагины публикуются под лицензией  MIT . Я приглашаю всех, заинтересованных в разработке этих и других плагинов, к совместной работе в этом направлении.
В ближайшее время в сети появится два ресурса, использующих эти плагины: http://maitavr.org/ Ассоциация разработчиков http://aristotel.ua/ Благотворительный аукцион
Доклад подготовил: Николай Зык ( relo_san ) [email_address] http://dinecat.com/ http://relo-san.com/

More Related Content

PPTX
Magento admin area
PDF
Шаблоны проектирования в Magento
PPTX
UI components: synergy of backend and frontend
PPTX
Интегратор Bitrix 4 занятие
PDF
07 eb technology neutrality in spectrum management 2012 final
PDF
NewMarque Brand
PDF
Application mayo clinic
PDF
Lee aase 10 reasons not to protect your tweets
Magento admin area
Шаблоны проектирования в Magento
UI components: synergy of backend and frontend
Интегратор Bitrix 4 занятие
07 eb technology neutrality in spectrum management 2012 final
NewMarque Brand
Application mayo clinic
Lee aase 10 reasons not to protect your tweets

Similar to Кастомизация генераторов в Symfony 1.3/1.4 (20)

PDF
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
PDF
Zend Framework и Doctrine
PPTX
Inroducing SAP ABAP - Presentation with basics SAP ABAP
PPT
[JAM 1.1] Symfony (Alexei Yanochkin)
PPTX
Алексей Горобец - Building Drupal Distributions. Why? When? and How?
PPTX
Шичко И. Вопросы практического применения СУБД FileMaker при решении повседне...
PDF
Symfony2 Best Practices
PDF
Создание дистрибутивов Drupal. Почему, зачем и как?
PDF
Умный фильтр 1С-Битрикса
PPT
Symfony2 practice
PPTX
Web осень 2013 лекция 8
PDF
WordCamp Russia 2015: Фильтры и события в WordPress.
RTF
PDF
C# Desktop. Занятие 08.
PDF
C++ осень 2012 лекция 6
PPTX
ППП (Пишем Плагины Правильно)
PDF
C++ осень 2013 лекция 7
PPTX
C language lect_19_basics
PPTX
Joomla (Админка) www.hotwebstudio.ru
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Zend Framework и Doctrine
Inroducing SAP ABAP - Presentation with basics SAP ABAP
[JAM 1.1] Symfony (Alexei Yanochkin)
Алексей Горобец - Building Drupal Distributions. Why? When? and How?
Шичко И. Вопросы практического применения СУБД FileMaker при решении повседне...
Symfony2 Best Practices
Создание дистрибутивов Drupal. Почему, зачем и как?
Умный фильтр 1С-Битрикса
Symfony2 practice
Web осень 2013 лекция 8
WordCamp Russia 2015: Фильтры и события в WordPress.
C# Desktop. Занятие 08.
C++ осень 2012 лекция 6
ППП (Пишем Плагины Правильно)
C++ осень 2013 лекция 7
C language lect_19_basics
Joomla (Админка) www.hotwebstudio.ru
Ad

Кастомизация генераторов в Symfony 1.3/1.4

  • 1. Кастомизация генераторов в Symfony 1.3/1.4. Управление функционалом и структурой плагинов. Николай Зык ( relo_san ) [email_address]
  • 2. Краткое содержание: зачем нужна генерация? базовые возможности Symfony как сделать плагин универсальнее генерация моделей, форм, модулей удобное конфигурирование
  • 4. Зачем нужна генерация ? увеличение скорости разработки увеличение гибкости проекта «кеширование» кода
  • 5. Основные направления генерации в Symfony генерация моделей и форм генерация модулей генерация пустых структур
  • 6. Шаблоны генераторов можно найти тут: lib / plugins / sfDoctrinePlugin/data/generator/ lib / plugins / sfPropelPlugin/data/generator/ Что они позволяют делать: менять методы в классах форм/фильтров менять шаблоны отображения в модулях менять методы контроллеров в модулях менять конфигурацию и хелперы модулей
  • 7. Сами генераторы лежат здесь: 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: ***
  • 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
  • 15. Настройки по умолчанию для плагина вы можете задать в конфиге плагина: yourPlugin/config/model.yml: enabled_forms: - ‘Model_1’ forms: Model_2: field_name: false Это позволит включить в плагине по-умолчанию самое необходимое, чтобы не указывать одно и тоже в каждом проекте.
  • 16. Управление генерацией модулей зависимость от изменения в модели выбор типа UI и темы управление вложенностью модулей управление доступом поддержка UI в виде клиентских приложений на Sencha (ExtJS ), Adobe AIR
  • 17. Как и в случае с моделями, мы конфигурируем модуль примерно так: lib/config/YourPlugin/module.yml: all: #all 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 per page
  • 19. Текущая версия плагина поддерживает 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 Конфиги указаны в порядке перекрытия.
  • 23. Возможности, поддерживаемые конфигурацией: лаконичный набор команд поддержка обоих принципов: «все включено» и «все выключено» генерация пустой структуры конфигов ограниченная валидация
  • 24. Опубликованные плагины: Общие надстройки над фреймворком: svn://dinecat.com/dinSymfonyExtraPlugin Надстройки над Doctrine : svn://dinecat.com/dinDoctrineExtraPlugin Генерация административной панели: svn://dinecat.com/dinAdminStdPlugin
  • 25. Постепенно мной будут публиковаться также другие плагины, в том числе «универсальные» плагины с общим для большинства проектов функционалом. Плагины публикуются под лицензией MIT . Я приглашаю всех, заинтересованных в разработке этих и других плагинов, к совместной работе в этом направлении.
  • 26. В ближайшее время в сети появится два ресурса, использующих эти плагины: http://maitavr.org/ Ассоциация разработчиков http://aristotel.ua/ Благотворительный аукцион
  • 27. Доклад подготовил: Николай Зык ( relo_san ) [email_address] http://dinecat.com/ http://relo-san.com/