将Symfony2用于我的一个结构。我想从其他模块文件中保留模块和与模块相关的各种文件。
所以对于例如。我有前端申请。在前端应用程序下我有用户,库模块。我想将所有与用户相关的文件保存在一个地方,将所有与图库相关的文件保存在一个地方。这样我就可以像在Symfony1.4中提供的那样在模块级实现抽象。
以下是我到目前为止所实现的文件夹结构。
web/
admin.php
frontend.php
apps/
autoload.php # this autloads the common libaries/vendors for all application eg. CommonBundle
admin/
AppKernel.php
AppAutoload.php # load application specific libraries
bootstrap.php.cache
config/
cache/
.
.
.
frontend/
AppKernel.php
AppAutoload.php
bootstrap.php.cache
config/
cache/
.
.
.
src/
Admin/
UserBundle/
Controller/
UsersController.php
Entity/
User.php
Repository/
UserRepository.php
Resources/
views/
indexUserView.twig.html
DiaryBundle/
Controller/
DiaryController.php
Entity/
Diary.php
Repository/
DiaryRepository.php
Resources/
views/
indexDiaryView.twig.html
Frontend/
UserBundle/
Controller/
UsersController.php
Entity/
User.php
Repository/
UserRepository.php
Resources/
views/
indexUserView.twig.html
DiaryBundle/
Controller/
DiaryController.php
Entity/
Diary.php
Repository/
DiaryRepository.php
Resources/
views/
indexDiaryView.twig.html
我对上面的文件夹结构很有信心。但是当我发现Symfony2社区支持在应用程序级而不是模块级创建Bundle时,我想知道在模块级创建Bundles的优缺点。什么可能是模块级别的创建陷阱?
我可以看到使用Bundles for modules
的许多优点模块的所有控制器,视图,模型都在同一个地方,并从控制器,模型,其他模块的视图中抽象出来。这样,在一个模块上工作的人只能在一个文件夹内工作而不用担心模块2中正在进行的工作,即Bundle2
使用下面的命令clear cache for just frontend application
,可以在应用程序级别发生清除缓存 shell> php apps/frontend/console cache:clear
如果您需要在前端应用程序中创建一个包,则命令如下。它在src / frontend应用程序下创建UserBundle。它还在apps / frontend / AppKernel.php中注册包名称。
shell> php apps/frontend/console generate:bundle --namespace=frontend/userBundle --format=yml
所以一切似乎都很好。但似乎Symfony2社区不认为这种方法是正确的吗?
请在我的方法中建议循环漏洞?
答案 0 :(得分:1)
我认为你不应该这样做......
Symfony2中没有module
这样的东西。有一本食谱
article解释了Symfony2和symfony1之间的区别。我想你在谈论不同的应用程序。您可以拥有不同的应用程序,但它不是recommended,您应该创建另一个项目并共享包。
我认为您希望实现的这个项目会破坏很多东西,您将无法再使用第三方捆绑包。
有一项名为KnpRad
的倡议使Symfony2的项目结构更加友好,但他们有很多问题,而且这个项目现在似乎已经死了。
引用他们的blog:
在当前的实现中,Symfony2具有硬编码路径,几乎可以在任何地方捆绑资源。这意味着,为了更改文件夹结构,我们需要覆盖所有Symfony2命令,扩展和编译器传递。它在我们的代码库中创造了一个鸿沟,并引入了一些捆绑的BC断点。
答案 1 :(得分:0)
Neetu .. Symfony1.4和symfony2有很大的不同。根据symfony2,您需要在src文件夹下生成应用程序,此处应用程序名称将是命名空间,在命名空间下,您可以创建在symfony1.4中称为模块的bundle。 命令是:
php app / console generate:bundle --namespace = Yournamespace / yourBundle --format = yml php app / console cache:clear --env = prod --no-debug 您可以根据需要创建应用程序。