我正在开发一个相当复杂的多语言网站,它将根据 html 语言环境呈现不同的部分。
我有一个部分结构,它将使用附加到文件名的区域设置来选择正确的区域。例如;
{% include '@BundleName/Layout/Text/_partial-name.' ~ htmlLocale ~ '.html.twig' with {'title' : resource.title } %}
虽然这有效,但如果所选语言环境尚未创建其部分内容,则存在风险,这将引发错误。我想做的是在尝试渲染部分之前检查部分是否存在,如果它尚不存在则回退到默认值。
{% if '@BundleName/Layout/Text/_partial-name.' ~ htmlLocale ~ '.html.twig' %}
{% include '@BundleName/Layout/Text/_partial-name.' ~ htmlLocale ~ '.html.twig' with {'title' : resource.title } %}
{% else %}
{% include '@BundleName/Layout/Text/_partial-name.html.twig' with {'title' : resource.title } %}
{% endif %}
显然这是行不通的,但这就是我所追求的!
您可以使用而不是测试部分是否存在ignore missing
:
{% include 'partial.html' ignore missing %}
如果您确实希望在文件丢失时进行后备,则可以将数组传递给 include 函数。这将使包含渲染数组中第一个找到的模板
{% include [
('@BundleName/Layout/Text/_partial-name.' ~ htmlLocale ~ '.html.twig'),
'@BundleName/Layout/Text/_partial-name.html.twig'
] with {'title' : resource.title } %}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)