gpt4 book ai didi

php - Symfony2 Twig 注入(inject)额外的 block

转载 作者:搜寻专家 更新时间:2023-10-31 21:13:08 25 4
gpt4 key购买 nike

有没有办法让 Symfony2 和 Twig 始终使只包含 block 的文件可用。

例如,如果我想让一个名为“cookie”的 block 在我系统的任何模板中始终可用,而不必总是在我使用的模板中包含或扩展它。

有什么想法吗?


澄清

假设我有一个通用 block ,它可以做一些事情,比如:

{% block myBlock %}
ABC Examples
{% endblock %}

我有一个类知道它想用这个 block 来渲染。不过,我的模板本身不一定知道这一点。

 {{ block(myObj.blockName) }}

然后我想拥有它,以便我的 Controller /服务/等。可以注册包含该 block 的文件,而我的模板实际上不需要直接了解它(因此我可以有多个这样的文件,每个文件都使用一些通用接口(interface))。

类似于使用 TwigExtension 注册自定义 Twig 函数。我的模板不需要明确知道它在那里,它只需要在运行时可用。

这有意义吗?


为了进一步澄清,我本质上是想做一些事情,就像在 Symfony2 中如何使用默认的 Twig block 来呈现表单一样。我不必每次都包含默认表单文件,只是在我想更改某些内容时才包含。

最佳答案

我在 Symfony 源代码中四处挖掘,试图找到我的答案。看起来没有什么花哨、巧妙的方法可以直接从配置文件或 Controller 中嵌入它,这有点令人失望,但不是什么大问题。

因此,为了解决我的情况,我将使用“use”关键字将我的 block 文件包含在我的基本模板中,这样它就可以用于其他所有内容。

{# widget_blocks.html.twig #}
{# Widgets #}
{% block my_widget %}
ABC Cookies
{% endblock %}

{# base.html.twig #}
{% use widget_blocks.html.twig %}
{{ block(my_widget.block) }}

不完全是我想要的,但足够接近。

关于php - Symfony2 Twig 注入(inject)额外的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14714001/

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