php-在树枝三元中定义
作者:互联网
考虑{{item.nw已定义,而item.nw是? ‘target =“ _ blank”’}}在下面的脚本中.有更简洁的方法吗?
我以为{{item.nw? ‘target =“ _ blank”’}}可能有效,但如果item.nw不为false,则返回item.nw;如果item.nw为false,则返回target =“ _ blank”'(参考https://twig.symfony.com/doc/2.x/templates.html#test-operator)
{% macro menu(menu,active) %}
{# menu is an associated array of containing:
name. required
path or id: One of the two are required. If both, URL will use path
path. optional and defaults to javascript:void(0)
id. optional and defaults to not adding an id to the item.
nw. optional and defalts to false. This is a flag for a new window.
class. optional and defaults to not adding an class to the item.
#}
{% for item in menu %}
{% set path = item.path is defined?item.path:"javascript:void(0)" %}
{% set id = item.id is defined?item.id:null %}
{% set class = item.class is defined?item.class:"" %}
{% if (path == active or id == active) %}
{% set class = class~' active ' %}
{% endif%}
{% if loop.first %}
{% set class = class~' first ' %}
{% elseif loop.last %}
{% set class = class~' last ' %}
{% endif %}
<li class="{{ class|trim }}">
<a href="{{ path }}"{{ item.nw is defined and item.nw ? ' target="_blank"' }}{{ id?"id=#{id}" }}>{{item.name}}</a>
</li>
{% endfor %}
{% endmacro %}
解决方法:
如果“已定义并且不为空”,则空合并将仅返回左侧的值.请记住,false也是一个值.
{{ item.nw ?? ' target="_blank"' }}
启用“严格模式”时,应检查在Twig模板中使用的每个变量.它可能很冗长,但比让模板中断更好.
如果使用默认过滤器,则可以使用其他方法来检查变量. https://twig.symfony.com/doc/2.x/filters/default.html
{{ item.nw|default() is not false ? ' target="_blank"' }}
{{ item.nw|default() == 'some_value' ? ' target="_blank"' }}
标签:twig,php 来源: https://codeday.me/bug/20191110/2014405.html