Symfony 2.0 связывает взаимодействие - PullRequest
4 голосов
/ 22 октября 2011

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

Symfony 2.0 кажется хорошим выбором для этого, однако я не могу понять, как позволить пакетам работать вместе при сохранении развязки.

В MainBundle я создам контроллер, который генерирует Список пользователей как показано ниже:

 user1      edit   remove 
 user2      edit   remove
 ....

Как разрешить сторонним бандлам добавлять свои пользовательские кнопки в этот список?

Например, AvatarBundle может захотеть добавить кнопку для загрузки изображения , SendEmailBundle я хочу добавить кнопку для отправки электронного письма пользователю и т. Д.

Как сохранить независимость пакета?Как я могу это сделать?

Большое спасибо, Массимо

Ответы [ 2 ]

0 голосов
/ 23 октября 2011

Если вы знаете, какие части вашего пакета будут расширены, вы можете использовать сервисы (так же, как пакет tiwg использует их для добавления новых шаблонных фильтров / тегов / помощников). Затем ваш пакет «просканирует» службы, определенные в DIC (которые имеют определенный тег), и затем вызовет их, чтобы получить информацию (определения кнопок в вашем случае).

0 голосов
/ 22 октября 2011

Насколько мне известно, есть только два способа изменения / добавления функциональности в предоставленных комплектах.

  • Изменить код
  • Переопределение шаблона / контроллера

В этом случае второе кажется гораздо предпочтительнее. Способы переопределения шаблона:

  • Определение нового шаблона в приложении / Ресурсы
  • Создание дочернего пакета и переопределение шаблона

Если вы также хотите переопределить контроллеры, второй путь - единственный путь. Это также мое личное предпочтение, так как, на мой взгляд, он чище, чем помещает конкретные вещи в общую папку приложения.

В любом случае, это лучше объяснено в документации FOSUserBundle:

https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/overriding_templates.md

https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/overriding_controllers.md

https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/overriding_forms.md

И, конечно, эта статья поваренной книги:
http://symfony.com/doc/current/cookbook/bundles/inheritance.html

Надеюсь, это поможет,

Dieter

...