我正在开发一个相当复杂的多语言网站,它将根据html语言环境呈现不同的部分内容.
我有一个部分结构,将使用附加到文件名的区域设置来选择正确的.例如;
{% include '@BundleName/Layout/Text/_partial-name.' ~ htmlLocale ~ '.html.twig' with {'title' : resource.title } %}
Run Code Online (Sandbox Code Playgroud)
虽然这有效,但如果所选的区域设置尚未(部分)创建其部分,则存在风险,这将引发错误.我想要做的是在尝试渲染之前检查partial的存在,如果它还不存在则回退到默认值.
{% 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 %}
Run Code Online (Sandbox Code Playgroud)
显然这不起作用,但这就是我追求的那种东西!
而不是测试部分是否存在,您可以使用ignore missing:
{% include 'partial.html' ignore missing %}
Run Code Online (Sandbox Code Playgroud)
如果您希望在文件丢失时进行回退,则可以将数组传递给include函数.这将使include渲染成为数组中第一个找到的模板
{% include [
('@BundleName/Layout/Text/_partial-name.' ~ htmlLocale ~ '.html.twig'),
'@BundleName/Layout/Text/_partial-name.html.twig'
] with {'title' : resource.title } %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1401 次 |
| 最近记录: |