symfony 2.0捆绑互通

时间:2011-10-22 07:43:10

标签: symfony bundle decoupling

我想基于主要捆绑包制作应用程序,让其他开发者能够使用自己的捆绑包来实现其他功能

Symfony 2.0似乎是一个很好的选择,但我无法弄清楚如何让捆绑在一起工作,同时保留解耦。

在MainBundle中,我将创建一个Controller,生成 Users-List ,如下所示:

 user1      edit   remove 
 user2      edit   remove
 ....

如何让第三方捆绑包将自定义按钮添加到此列表中?

例如 AvatarBundle 可能想要添加按钮来上传图片 SendEmailBundle 我想添加按钮发送电子邮件给用户等等。

如何保持捆绑独立性?我该怎么做?

非常感谢, 马西莫

2 个答案:

答案 0 :(得分:0)

据我所知,在提供的捆绑包中只有两种更改/添加功能的方法。

  • 更改代码
  • 覆盖模板/控制器

在这种情况下,第二个似乎更可取。 覆盖模板的方法是:

  • 在app / Resources
  • 中定义新模板
  • 创建子包并覆盖模板

如果你也想要覆盖控制器,第二种方式是唯一的方法。 这也是我个人的偏好,因为在我认为它更清晰,然后将特定的东西放在一般的app-folder中。

无论如何,在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

希望这有帮助,

迪特

答案 1 :(得分:0)

如果您知道捆绑包的哪些部分将被扩展,您可以使用服务(与tiwg捆绑包使用它们添加新的模板过滤器/标签/帮助器的方式相同)。 然后,您的捆绑包将“扫描”DIC中定义的服务(具有已定义的标记),然后调用它们以获取信息(在您的情况下为按钮定义)。