Php Symfony2-AdminBundle实际上是组织应用程序的正确方式吗?

Php Symfony2-AdminBundle实际上是组织应用程序的正确方式吗?,php,symfony,bundle,Php,Symfony,Bundle,我是Symfony的新手,正在启动一个包含管理部分的应用程序。一般的建议很明显——做一个AdminBundle 然而,这真的是最佳实践吗?Symfony文档说,捆绑包是一个可以按原样分发的“插件”,可以在另一个应用程序中使用。难道管理员不需要知道主应用程序的所有模型和内容吗?它是一个专门为管理我的应用程序的更改而创建的管理部分,那么它是可分发的还是自包含的呢 我觉得我遗漏了一些东西,因为如果所有的建议都是制作一个AdminBundle,那么我显然不理解一些东西,或者还没有深入研究Symfony

我是Symfony的新手,正在启动一个包含管理部分的应用程序。一般的建议很明显——做一个AdminBundle

然而,这真的是最佳实践吗?Symfony文档说,捆绑包是一个可以按原样分发的“插件”,可以在另一个应用程序中使用。难道管理员不需要知道主应用程序的所有模型和内容吗?它是一个专门为管理我的应用程序的更改而创建的管理部分,那么它是可分发的还是自包含的呢

我觉得我遗漏了一些东西,因为如果所有的建议都是制作一个AdminBundle,那么我显然不理解一些东西,或者还没有深入研究Symfony

我只是想让我的应用程序以正确的结构启动


仅供参考,我还创建了一个带有默认AppBundle的项目。我只是打算把所有的东西都放在那里,但这似乎也不对,因为要把所有的管理工作分开组织起来会比较困难。

我认为这取决于巡演的需要和项目的规模。创建一个特殊的包来放置管理面板的逻辑是一个很好的实践。但是,如果您有一个只有两个实体的小型应用程序,则不必创建AdminBundle

Symfony为您提供任何您喜欢的方式来做您需要的事情。您可以创建捆绑包,或将所有管理面板业务逻辑放入主捆绑包控制器目录中的特殊目录,或将所有代码放入相同的控制器,并通过设置防火墙来管理管理操作的权限

我建议使用AdminBundle。它让您的代码更干净:一个包中有一个客户机逻辑,另一个包中有一个管理逻辑


从symfony官方文档中获取的捆绑包描述并没有说任何相反的话。因为如果你愿意,你可以在另一个应用程序中使用你的AdminBundle。Bundle是一种将不同类型的业务逻辑彼此分离的方法。

好的,现在我为站点的管理部分提供了AdminBundle,为访问者使用或登录的站点的正常部分提供了AppBundle。这对我来说真的没什么意义。管理员是应用程序的一部分。不过,同时,我肯定觉得最好将所有的管理内容分离成一个捆绑包,这样它就可以拥有自己的控制器集,等等@BadHorsie你可以将管理视为一个单独的应用程序。它可能在同一个后端数据上运行,但它是一个针对不同用户和不同用途的单独接口,具有不同的逻辑和需求。在某些方面,您拥有的是一个面向用户的应用程序和一个管理应用程序,因此将它们分开对我来说并不奇怪。关于资源,文档中说将我的AppBundle资源放在
app/resources/
中。但是,我会将我的管理资源放在
src/AdminBundle
中。我觉得两个包应该遵循相同的惯例。我可能会把正面的网站资源放在
src/AppBundle
中,把管理员的东西放在
src/AdminBundle
中,然后把共享资源(例如jQuery、Bootstrap)放在
app/resources/public
中,这是个好主意吗?通常的做法是什么?如果AdminBundle依赖于没有打包在bundle中的资源,那么这是否违反了AdminBundle是自包含的想法?这是一个好问题。我认为在您的情况下——当您打算使用两个bundle来分离逻辑时——您可能希望在两个bundle中都使用jquery,对吗?因此,在这种情况下,您需要确定所有共享资产的基本位置。这方面没有单一的规则。这真的取决于项目结构。再来一包?我觉得太多了