格式化语句

  • 本文关键字:语句 格式化 twig
  • 更新时间 :
  • 英文 :


当前我使用的是:

{% if locale == 'pt' %}
<html lang="pt-BR">
{% elseif locale == 'en' %}
<html lang="en-US">
{% endif %}

这是不错的,但使整个<html>标记在源代码中重复。你觉得怎么样?

在PHP模板中,我经常使用以下内容:

<html lang="<?php
if ($locale === 'pt') {
echo 'pt-BR';
} elseif ($locale === 'en') {
echo 'en-US';
}
?>">

我想知道是否有一种方法可以用Twig产生类似的结果。这是迄今为止我得到的最好的,但对我来说有点奇怪:

<html lang="{%
if locale == 'en'
%}en-US{%
elseif locale == 'pt'
%}pt-BR{%
endif %}"></html>

有更整洁的方法吗?

https://twigfiddle.com/4lwsjb

您可以创建一个数组/哈希来缩短代码:

{% set localization = {
'pt': 'pt-BR',
'en': 'en-US',
} %}
<html lang="{{ localization[locale]|default('en-US') }}">

演示


我甚至建议在控制器中创建定位数组,并将其传递给视图或将其注册为全局变量

我刚刚添加的默认过滤器用于在阵列中locale未知的情况下提供回退