将twig文件放在Symfony Framework中的正确方法

时间:2017-07-25 06:19:10

标签: php symfony

我是symfony3的新手,所以,请耐心等待。

从文档和我遇到的大多数教程中,将枝条放在app\Resources目录中。是的,我跟着它。

最近,我发现了创建Controller的这个命令,这是我能做到的最快的方法:

  

php bin / console generate:controller --actions = showAction()/ profile /:AppBundle:Profile:profile.html.twig`

执行上述行时,它会自动在Profile内创建src\AppBundle\Controller控制器,在src\AppBundle\Resources内自动创建细枝,注意:Resources是自动创建的新文件夹。< / p>

这是目录:

enter image description here

从这一点开始,我很好奇存储twig文件的合适文件夹是什么。我应该将文件复制并复制回app文件夹吗?这背后有什么理由吗?

4 个答案:

答案 0 :(得分:1)

两者都是正确的,但如果你愿意,在bestPractices(https://symfony.com/doc/current/best_practices/templates.html#template-locations)中,他们说:

  

将所有应用程序的模板存储在app / Resources / views /目录中。

答案 1 :(得分:1)

其他大多数答案都没有给你全面的了解,所以让我们从一个小背景开始。

有一个issue created on the SensioGeneratorBundle来更新Controller生成器以使用最佳实践,但它已关闭并标记为更新Doctrine CRUD生成器的duplicate of another issue。在那里,问题已修复,以便模板使用app/Resources/views目录。我不认为original issue应该被关闭。

如果您查看pull request for the Doctrine CRUD generator,它会将捆绑目录路径从$bundle->getPath()更改为$this->getContainer()->getParameter('kernel.root_dir')。但是,Controller生成器从未进行过类似的更新。

我相信你偶然发现了应该在包本身内更新的内容,并且原始问题应该从未被关闭过。我对这个问题发表了评论,可能只是自己提交一个拉取请求来修复它。

因此,要回答您的原始问题,是的,您应该将它们移回app/Resources/views文件夹以遵循Symfony最佳做法,最终应在SensioGeneratorBundle更新Controller生成器命令

答案 2 :(得分:0)

如果你在app中创建资源视图,那么两种方式都是很好的bcs,如果你只需创建一个bundle就可以在所有bundle中访问它,那么bundle资源内部也可以。所以,它取决于你。 :)

答案 3 :(得分:0)

这两个文件夹都是正确的,但大多数应用程序/资源用于存储扩展了布局或电子邮件等细分,但在Controller内部使用此控制器。 但是,从控制器使用到twoher控制器的枝条