0

Symfony2 检测从哪里加载模板: fromapp/Resourses/views/还是 from Bundle/Resourses/views/

在查看app/Resourses/views/.

我发现:Symfony\Bundle\FrameworkBundle\CacheWarmer\TemplateFinder

现在我只需要覆盖它。如何?

4

1 回答 1

0

Symfony2 使用这个工作流程

  1. 访问路由,将控制权传递给控制器​​,渲染视图(模板)
  2. 如果视图没有被覆盖 ( app/..../) 则渲染包模板
  3. 如果有覆盖,那就拿走它

所以问题是:如何覆盖模板?

在 symfony2 中覆盖模板有两种不同的方式

  • 在目录中定义一个同名的模板app/resources。一起“同名”你必须重现捆绑的相同结构。因此,如果您的模板在其中,即myFooBundle/views/mainTemplate.html.twig您必须通过在其中创建一个新模板app/resources/myFooBundle/views并调用它来覆盖它mainTemplate.html.twig
  • 您必须从头开始创建一个新的包并覆盖getParent()方法,该方法必须返回一个包含您要覆盖的包名称的字符串(myfooBundle)。现在,如果您在原始模板的相同位置创建一个新模板,您已经覆盖了它。不建议使用此方法,因为您还必须覆盖控制器。
于 2012-08-29T07:17:22.437 回答