检查,如果变量是字符串或阵列中的枝条(Check if variable is string or

2019-07-05 07:23发布

是否有可能以检查是否给定的变量是字符串中Twig

预期的解决方案:

messages.en.yml

hello:
  stranger: Hello stranger !
  known: Hello %name% !

Twig模板:

{% set title='hello.stranger' %}
{% set title=['hello.known',{'%name%' : 'hsz'}] %}

{% if title is string %}
  {{ title|trans }}
{% else %}
  {{ title[0]|trans(title[1]) }}
{% endif %}

是否有可能做这种方式? 或者,也许你有更好的解决办法?

Answer 1:

可以用测试来完成iterable ,加入twig1.7,如沃特法官在评论中指出:

{# evaluates to true if the foo variable is iterable #}
{% if users is iterable %}
    {% for user in users %}
        Hello {{ user }}!
    {% endfor %}
{% else %}
    {# users is probably a string #}
    Hello {{ users }}!
{% endif %}

参考: 迭代



Answer 2:

好吧,我做它:

{% if title[0] is not defined %}
    {{ title|trans }}
{% else %}
    {{ title[0]|trans(title[1]) }}
{% endif %}

难看,但作品。



Answer 3:

我发现iterable不足够好,因为其他对象也可以迭代,并且显然比一个不同的array

因此添加新Twig_SimpleTest检查项目is_array更加明确。 /你可以添加到您的应用程序配置树枝被自举之后。

$isArray= new Twig_SimpleTest('array', function ($value) {
    return is_array($value);
});
$twig->addTest($isArray);

用法变得非常干净:

{% if value is array %}
    <!-- handle array -->
{% else %}
    <!-- handle non-array -->
{% endif % }


文章来源: Check if variable is string or array in Twig
标签: twig