Symfony 2.0捆绑包互操作性

4
我希望制作一个基于“主包”的应用程序,以便其他开发人员可以制作自己的包来实现其他功能。Symfony 2.0似乎是一个不错的选择,但我无法弄清楚如何让这些包在保持解耦的同时一起工作。
在MainBundle中,我将创建一个控制器,生成像下面这样的“用户列表”:
 user1      edit   remove 
 user2      edit   remove
 ....

如何让第三方bundle将其自定义按钮添加到此列表中?
例如,AvatarBundle可能希望在图像上传中添加一个按钮,SendEmailBundle可能希望向用户发送电子邮件等。
如何保持bundle的独立性?我该怎么做?
非常感谢, Massimo
2个回答

0
据我所知,在提供的捆绑包中,只有两种改变/添加功能的方法。
- 更改代码 - 覆盖模板/控制器
在这种情况下,第二种方法似乎更可取。覆盖模板的方法有:
- 在app/Resources中定义一个新的模板 - 创建一个子捆绑包并覆盖模板
如果您还想覆盖控制器,那么第二种方法是唯一的选择。在我看来,这也是我的个人偏好,因为它比将特定内容放入通用应用程序文件夹中更加清晰。
无论如何,在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

1
好的模板或控制器覆盖依赖于“父”包。在用户列表的情况下,是MainBundle。然而,我发现这种技术只允许一级覆盖...我的意思是可能会有第二个包覆盖主包并添加“头像按钮”,但第三个包怎么办?如何添加另一个自定义按钮? - Massimo Nicolardi

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接