4

我想制作一个基于主包的应用程序,让其他开发人员可以制作自己的包来实现其他功能

Symfony 2.0 似乎是一个不错的选择,但是我不知道如何让捆绑包一起工作,同时保持解耦。

在 MainBundle 中,我将创建一个控制器,它生成一个用户列表,如下所示:

 user1      edit   remove 
 user2      edit   remove
 ....

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

例如,一个AvatarBundle可能想要添加一个按钮来上传 Image,一个SendEmailBundle我想要添加一个按钮来向用户发送电子邮件等等。

如何保持捆绑独立性?我怎样才能做到这一点?

非常感谢,马西莫

4

2 回答 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

希望这可以帮助,

迪特

于 2011-10-22T09:21:14.557 回答
0

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

于 2011-10-23T19:16:44.110 回答