【问题标题】:getting error that a template that extends can not have body得到扩展的模板不能有正文的错误
【发布时间】:2012-07-31 11:50:15
【问题描述】:

我正在编写 jobeet 教程。 当我像这样在 localhost 上运行项目时:

http://localhost/Symfony/web/app_dev.php/ens_job/

我收到一个错误

A template that extends another one cannot have a body in EnslJobeetBundle:Job:index.html.twig at line 7.

在这种情况下我该怎么办?

我使用 index.html.twig 如下:

<!-- src/Ens/JobeetBundle/Resources/views/Job/index.html.twig -->
{% extends 'EnsJobeetBundle::layout.html.twig' %}

{% block stylesheets %}
  {{ parent() }}
  <link rel="stylesheet" href="{{ asset('bundles/ensjobeet/css/jobs.css') }}" type="text/css" media="all" />
{% endblock %}

<!-- the rest of the code -->

【问题讨论】:

  • {% extends 'EnsJobeetBundle::layout.html.twig' %} {% 块样式表 %} {{ parent() }} {% endblock %}
  • @thecatontheflat 文件在此链接上gist.github.com/3216535

标签: symfony twig


【解决方案1】:

当您的子模板中的内容超出blocks 时会发生此错误。

您必须从您的 index.html.twig 中删除 &lt;!-- src/Ensl/JobeetBundle/Resources/views/Job/index.html.twig --&gt;

【讨论】:

  • 是的,舞会解决了。这东西是评论呐,那为什么会出现这个问题
  • 任何不是 Twig 代码的内容都必须在 Twig 块内。
  • 或者更确切地说,任何不是 Twig 代码的内容都必须在 Twig 上下文中,例如块。 (stackoverflow 不允许编辑我之前的评论)
  • 谢谢!就是这样!
【解决方案2】:

如果您要扩展布局,Twig 不允许任何 html 语法。这意味着即使是 html 中的注释标签也被视为已定义块之外的内容。如果您想保留 cmets,那么您可以像这样在 twig cmets 中执行此操作:

{# src/Ens/JobeetBundle/Resources/views/Job/index.html.twig #}
{% extends 'EnsJobeetBundle::layout.html.twig' %}
{% block stylesheets %}
  {{ parent() }}
  <link rel="stylesheet" href="{{ asset('bundles/ensjobeet/css/jobs.css') }}" type="text/css" media="all" />
{% endblock %}
{# the rest of the code #}

【讨论】:

  • 这也是一个可以选为合适的答案
猜你喜欢
  • 2016-02-23
  • 1970-01-01
  • 1970-01-01
  • 2017-09-27
  • 2013-04-22
  • 2016-12-17
  • 2016-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多