gpt4 book ai didi

symfony - 从嵌入模板扩展父 block

转载 作者:行者123 更新时间:2023-12-02 18:41:33 25 4
gpt4 key购买 nike

我想在布局中的样式和脚本 block 内注入(inject)新值,但来自嵌入 block 。当然,它会抛出错误禁止在 block 外调用“parent”。。有什么解决办法吗?

layout.html.twig:

<!DOCTYPE html>
<html>
<head>
{% block style %}
<link rel="stylesheet" href="foo.css">
{% endblock %}
</head>
<body>

{% block content "" %}

{% block scripts %}
<script src="foo.js"></script>
{% endblock %}

</body>
</html>

list.html.twig:

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

{% block content %}
{% embed datatable.html.twig %}
{% block tbody %}
<tr>
<td>my awesome table</td>
</tr>
{% endblock %}
{% endembed %}
{% endblock %}

datatable.html.twig:

<table id="myDatatable">
<tbody>
{% block tbody "" %}
</tbody>
</table>

{% block styles %}
{{ parent() }}
<link rel="stylesheet" href="dataTables.css">
{% endblock %}

{% block scripts %}
{{ parent() }}
<script src="dataTables.js"></script>
{% endblock %}

(我不能/不会使用 list.html.twig 中的 scriptsstyles block 。它们是数据表的一部分模板,在 list.html.twig 中定义主题没有任何意义。)。遗憾的是我不能使用 use 因为这个函数不支持动态属性,只支持字符串。

From the doc :

Because use statements are resolved independently of the context passed to the template, the template reference cannot be an expression.

最佳答案

正如评论中所述,包含/嵌入不能更改其包含器中的 block 。也就是说,有一个可用的扩展可以解决您的问题。

可以找到此延迟 Twig 扩展 here

基本上,节点推迟了所述 block 的执行。通过这种方式,您可以创建一个变量来保存所有 javascript 链接并输出它们。这可以在 advanced 中看到在 github 上找到的示例。

归功于Eugene Leonovich用于制作此扩展

关于symfony - 从嵌入模板扩展父 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42702118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com