Обзор Propel Behaviors в Symfony на примере плагина sfPropelActAsTaggableBehaviorPlugin
О работе "Обзор Propel Behaviors в Symfony на примере плагина sfPropelActAsTaggableBehaviorPlugin"
В Symfony для Propel есть такая замечательная функциональность как Behaviors. Благодаря Behavior можно расширять существующие модели без необходимости изменять код самой модели. Фактически получает имитация “множественного” наследования. propel.builder.addBehaviors = true
А в самой модели в самом конце прописать следующее Далее незабываем пересобирать модели и очистить кеш Теперь в нашей модели можно воспользоваться новыми методами, например вот так. Чтобы более подробнее ознакомиться с Behaviors советую почитать:
- [2] How to write a Propel behavior В репозитории плагинов можно ознакомиться с 14 плагинами использующими [6] Behavior. А теперь о минусах:
• Многие из плагинов давно не обновлялись, в частности sfPropelActAsTaggableBehaviorPlugin. Он не работает с Propel 1.3.
• На страничке плагина [7] sfPropelActAsTaggableBehaviorPlugin Readme проблема с описанием использования плагина, верстка “хромает”, если посмотреть [8] Show Markdown, то можно увидеть много интересного, :). Искать строчку “edit the classes that you want to make taggable” и читать ниже. И особенности:
Т.к. в базовый класс, например: BasePost.php добавляется метод __call через который собственно и работает Behaviors у меня возник один казус. Я воспользовался рекомендацией [9] How To Handle i18n Db Fields With the Admin Generator Method 2, чтобы в админке была поддержка мультиязычного контента. Идея отличная, но там тоже используется метод __call, который перекрывал метод родителя. Работающий кусок кода для мультиязычности с поддержкой Behaviors Рейтинг работы балловГолосовать могут только зарегистрированные пользователиРегистрацияВернуться |
