【问题标题】:How do I define an entity which is commonly used several bundles?如何定义一个常用多个捆绑包的实体?
【发布时间】:2011-10-03 17:15:14
【问题描述】:

我想创建一个博客系统来练习 symfony2, 但目前我在创建用户或博客等实体时有点困惑。 原因如下:

  • 用户(或博客)常用于前端和后端(管理员) (目前我已经考虑创建 FrontendBundle 和 AdminBundle)
  • 实体必须属于一个包。

目前我已经考虑了以下方法,但最好的方法是什么 在这种情况下,或者请告诉我是否有其他方法。

  • 创建名为“BlogCommonBundle”的包并将用户实体定义为“BlogCommonBundle:User”。
  • 在 1 个捆绑包下定义所有控制器,例如“BlogBu​​ndle”,因此 前端/后端(管理员)控制器属于同一个包。

【问题讨论】:

  • 为什么不创建一个额外的 UserBundle 并让 Frontend 和 Admin 依赖它呢?
  • 感谢@hakre 的回答,很抱歉我的回复很慢,我没有注意到您的评论。我当时没有考虑你建议的模式。但正如 Arms 在下面建议的那样,这对我来说是个新主意。

标签: php symfony bundle


【解决方案1】:

我认为创建一个 BlogBu​​ndle 并为前端和管理功能提供多个控制器是处理此问题的好方法。两个控制器都将使用相同的实体和存储库,您可以轻松地在应用程序的安全设置中为您的管理操作设置防火墙。通过将所有博客与一个包相关联,您可以保持良好的代码组织。

UserBundle 也是如此。提醒自己一个包应该代表一个应用程序的一组类似功能是有帮助的。因此,如果您有获取博客文章并允许您创建和管理它们的代码,它们自然会组合在一个包中。

【讨论】:

  • 我想补充一点,我发现在 Symfony2 中停止将您的捆绑软件视为 symfony1 中的应用程序非常重要 - 例如。尝试创建单独的后端和前端包。试着把它想象成一个完整的 symfony1 项目/插件,所以如果你需要同时拥有前端和后端——通常你应该在一个包中完成。
  • 感谢@Arms 的回答,很抱歉我的反应很慢。将用户和博客包分开对我来说是新想法。在这种情况下,“user mypage”(前端)控制器和“用户管理”(admin)控制器是否都定义在 User bunde 下?我想参考你的回答,谢谢。
  • @mat8su 不用担心 :) 是的,您的前端和管理控制器都存在于同一个包中,因为它们都处理您的用户(或博客)逻辑。
  • 感谢@Arms 的回复,我理解您的建议。
  • 再混淆一下...我会在博客包中保留用户管理功能,但在 UserBundle 中保留用户实体本身。如果您正在编写博客包以供公开发布或在许多不同的项目中使用,您可以为用户设置一个配置选项来指定他们的 User 类。
【解决方案2】:

我在这里问了一个类似的问题: How to share a Symfony2 model with several projects

我采用了包含所有实体、表单、存储库等的“ModelBundle”方法。这些都与 FrontendBundle 和 BackendBundle 共享。 到目前为止,我对这个解决方案非常满意。

【讨论】:

  • 感谢@Dieter 的回答,很抱歉我的反应很慢,这与我担心的情况非常相似。你的案例似乎比我的要大得多,但这是非常有用的信息。我想参考你的回答,谢谢。
  • 我的荣幸!随意+1我的答案,我对这一切都很陌生:)(回答就是,我通常是问问题的人;-))
  • 对不起,目前我有 13 个声望,但投票需要 15 个声望。所以我稍后会投票给你的答案,请稍候。(我也是这个网站的新手)
猜你喜欢
  • 2013-11-24
  • 1970-01-01
  • 1970-01-01
  • 2014-05-02
  • 1970-01-01
  • 2019-11-17
  • 2017-05-08
  • 2018-09-04
  • 1970-01-01
相关资源
最近更新 更多