对块名称使用变量不起作用。
{% set block_name = "my_block_name" %}
{% 块 block_name %}
一些html ...
{% 结束块 %}
因为block_name
表示为字符串'block_name'
抱歉,您是说您不能使用带有树枝的动态块,或者我以错误的方式使用它?
你是对的,没有动态块名称
您不能使用动态块。 在 Twig 用户邮件列表上发布您的用例。
很抱歉打开一个冷箱子^^。 我想我可能遇到了一个可以从动态块名称中受益的用例......
我使用带有单表继承的 Doctrine(基本抽象类 = 文章,而新闻 + 常见问题扩展文章)。
然后,我创建了能够创建新闻和常见问题解答的表单类。 但是所有表单都使用相同的树枝模板。 然后我需要自定义一个字段模板(比如 article.product),如这里所述。
问题是,字段的名称会根据使用的表单而变化。 名称将是 news_product 或 faq_product,因此能够像这样自定义我的表单字段以避免重复会很方便:
{%- block '_'~type~'_product_widget' -%}
...
{% endblock %}
经过一番研究,我通过使用getBlockPrefix在不同的表单类型类中强制使用表单的前缀来解决这个问题,这样所有表单都会有相同的字段名称,我可以简单地自定义article_product:
public function getBlockPrefix(){
return 'article';
}
所以只是想记录这个可能对某人有帮助的用例......
块名称是模板结构的一部分,因此必须在编译时知道。
变量仅在运行时已知。
最有用的评论
块名称是模板结构的一部分,因此必须在编译时知道。
变量仅在运行时已知。