【问题标题】:Symfony2 extends twig in bundle - no effectSymfony2 捆绑扩展树枝 - 没有效果
【发布时间】:2015-05-25 19:46:23
【问题描述】:

我在 Symfony2 中做我的第一个项目。我的模板有问题。我的主要树枝文件是“index.html.twig”。它位于src/Gogs/CMSBundle/Resources/views/Default/index.html.twig

我尝试从content.html.twig 扩展主树枝文件 -> 它也在同一个目录中。

index.html.twig 我有{% block body %}{% endblock %}

我的content.html.twig 看起来像:

{% extends 'GogsCMSBundle:Default:index.html.twig' %}

{% block body %}
Some content
{% endblock %}

我在许多论坛上寻找解决方案,但没有任何效果。 Symfony 没有给我任何错误 - 没有效果。

当我尝试在 index.html.twig 中使用 include 时,它​​工作得很好。代码如下。

{% include "GogsCMSBundle:Default:content.html.twig" %}

我还尝试使用其他命令:

 {% extends 'GogsCMSBundle:Default:index.html.twig' %}
 {% extends 'GogsCMSBundle::index.html.twig' %}
 {% extends 'GogsCMSBundle:index.html.twig' %}
 {% extends '::index.html.twig' %}
 {% extends 'index.html.twig' %}

所有这些都没有任何效果 - 也没有错误。

我的主控制器:

 return $this->render('GogsCMSBundle:Default:index.html.twig', array('name' => $page, 'menu' => $menu));

我多次清理缓存。

【问题讨论】:

  • 到底是什么问题?有任何异常或错误消息吗?
  • “content.html.twig”中的内容未显示在 index.html.twig 中 - 没有错误或消息。没有什么。我不知道为什么
  • 您知道您将控制器设置为渲染index.html.twig 而不是content.html.twig,它扩展了您的index 文件,对吗?还是因为复制代码打错了?
  • class DefaultController extends Controller { public function indexAction() { $page = $menu = "page_name"; return $this->render('GogsCMSBundle:Default:index.html.twig', array('name' => $page, 'menu' => $menu)); } 嗯。我渲染 index.html.twig - 不是内容
  • 这就是您在content.html.twig 中定义的文本不显示的原因。您必须将此模板设置为在您的控制器中呈现,因为它是扩展您的 index.html.twig 文件的模板,该文件用作布局。

标签: php html symfony twig


【解决方案1】:

你需要在 app\Resources\views 中移动 indexd.html.twig = 这是 symfony 的基本布局。接下来在 src/YourBundle/Resources/views layout.html.twig 中创建 - 扩展 index.html.twig:

 {% extends '::index.html.twig' %}

最后,添加 content.html.twig :

{% extends 'GogsCMSBundle::layout.html.twig' %}

更多信息there

【讨论】:

  • 这不是真的。我不需要将索引移动到应用程序。现在一切都很完美,一切都只是捆绑在一起。
【解决方案2】:

@Artamiel 找到了答案...

错误在控制器中。控制器必须指明content.html.twig

所以解决办法:

index.html.twig

{# src/Gogs/CMSBundle/Resources/views/Default/index.html.twig #}

{% block body %}{% endblock %}.

content.html.twig

{# src/Gogs/CMSBundle/Resources/views/Default/content.html.twig #}
    {% extends 'GogsCMSBundle:Default:index.html.twig' %}

    {% block body %}
    Some content
    {% endblock %}

Contoller.php

return $this->render('GogsCMSBundle:Default:content.html.twig');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-18
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多