Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 渲染一个“a”块;“家长”;来自a";“儿童”;小枝模板_Php_Templates_Twig - Fatal编程技术网

Php 渲染一个“a”块;“家长”;来自a";“儿童”;小枝模板

Php 渲染一个“a”块;“家长”;来自a";“儿童”;小枝模板,php,templates,twig,Php,Templates,Twig,我有两个模板: Fields.html.twig,其中包含一个子模板 {% block important %} This block should be renderable from the sub template {% endblock important %} {% include 'XButton.html.twig' %} XButton.html.twig,它需要呈现包含它的模板中定义的块 block('important') 似乎包含的模板无法简单地呈现包含它的人的块

我有两个模板:

Fields.html.twig,其中包含一个子模板

{% block important %}
  This block should be renderable from the sub template
{% endblock important %}

{% include 'XButton.html.twig' %}
XButton.html.twig,它需要呈现包含它的模板中定义的块

block('important')
似乎包含的模板无法简单地呈现包含它的人的块。

父模板如何将完整的上下文传递给子模板,以便子模板可以访问父模板中定义的块?

您试图执行的操作是不可能的,因为包含的模板无法了解其他模板中定义的块

您需要稍微改变代码的结构,以便以某种方式在父级中定义块的内容-您至少有两个选项:

使用和: Fields.html.twig

XButton.html.twig

使用: Fields.html.twig

XButton.html.twig


您试图做的是不可能的,因为包含的模板无法了解其他模板中定义的块

您需要稍微改变代码的结构,以便以某种方式在父级中定义块的内容-您至少有两个选项:

使用和: Fields.html.twig

XButton.html.twig

使用: Fields.html.twig

XButton.html.twig


您可以通过传递父模板名称来使用include执行此操作

{% block important %}
  This block should be renderable from the sub template
{% endblock important %}

{% include 'XButton.html.twig' with {'parent': _self} %}
然后在包含模板中使用它

{{ block('important', parent) }}

尽管如此,块的内容将呈现两次—一次是在父级中定义,另一次是在子级中定义—请参见

,您可以通过传递父级模板名称来使用include执行此操作

{% block important %}
  This block should be renderable from the sub template
{% endblock important %}

{% include 'XButton.html.twig' with {'parent': _self} %}
然后在包含模板中使用它

{{ block('important', parent) }}

尽管如此,块的内容将呈现两次—一次在父级中定义,一次在子级中定义—请参见

包含的文件无法更改其调用者的内容。所有变量也通过值传递,而不是引用。换句话说,我需要的是“只需将模板x的内容复制到此位置”。我认为include可以做到这一点,但它似乎不知道被包含后的块。你想做的是不可能的-如果你发布模板的代码(简化版本),我们可能会建议一种不同的方法来实现你想做的-这有点不清楚…好吧,我添加了一个代码段,其中包含的文件无法更改调用者的内容。所有变量也通过值传递,而不是引用。换句话说,我需要的是“只需将模板x的内容复制到此位置”。我认为include可以做到这一点,但它似乎不知道被包含后的块。你想做的是不可能的-如果你发布模板的代码(简化版本),我们可能会建议一种不同的方法来实现你想做的-这有点不清楚…好吧,我在您的第一个代码段中添加了一个代码段。您需要定义
块的重要性
及其内容,并添加
包含
,因此您将最终呈现块的内容两次,不是吗?在这里看到它的作用是的,我们显然仍然需要父模板上的
块important
,我只是指上面示例中的include语句。如果您仍然想公平地使用
块,这只是另一种选择-我将该信息添加到您的答案中,并在您的第一个代码段中删除了downvoteIn,您需要定义
块的重要部分及其内容,并添加
包含
,因此最终将呈现块的内容两次,你愿意吗?在这里看到它的作用是的,我们显然仍然需要父模板上的
块important
,我只是指上面示例中的include语句。如果你仍然想公平地使用
,这只是另一种选择——我将该信息添加到你的答案中,并删除了否决票
{% block important %}
  This block should be renderable from the sub template
{% endblock important %}

{% include 'XButton.html.twig' with {'parent': _self} %}
{{ block('important', parent) }}