{# defined works with variable names #}
{% if foo is defined %}
...
{% endif %}
如果使用以下方式,则设置一个变量:
{% set foo = 'bar' %}
有一种方法可以将变量设置为未定义? 我有一个变量,该变量传递给了一个twig html文件,并且并非总是通过,而我只是遇到了可能无效的情况。 当它为null时,我想将其设置为未定义,因为文件中其余部分的逻辑语句正常工作,并且首先是定义的疼痛测试,然后每次使用此变量,第二次null。
I遇到了这一conversation,想知道其他人是否有解决变量的解决方案,或者是为可以不确定或无效的变量设置的更好方法。
用代码任意: 我正在研究我的后端管理部门。 由于各种原因,我没有使用Sonataadmin,而是想建立自己的奏鸣曲。 在此领域,我可以查看所有用户的摘要,在某些页面中,我可以查看和编辑用户个人资料的部分。 我有一个包含指向摘要页面的链接的标题小树枝文件,然后包含指向用户配置文件部分的链接的另一行。
对于我的路由admin_profile_show-我需要包含用户加载正确的页面,但是如果用户在此处为null,这将导致错误,因为它无法到达用户名属性。{% if user is defined %}
{{ path('admin_profile_show', { 'username': user.username}) }}
...other routes and links
{% endif %}
我猜想我的真正问题是,我允许用户名可以为null的情况,因此将其定义为null。 在更改其他文件的逻辑之前,我想知道是否有一个未设置的变量可以如下:
{% if user is null %}
{% unset user %}
{% endif %}
上面提到的AS F21,这不是一个很好的练习模板中的数据模板,但是如果您真的想这样做,您可以简单地扩展Twig完成这项工作(我的意思是您可以通过扩展IT
来创建自己的函数),这是一个简单的例子:
class STWebExtension extends \Twig_Extension
{
/**
* @return array|\Twig_SimpleFunction
*/
public function getFunctions()
{
return [
new \Twig_SimpleFunction('array_keys', [$this, 'array_keys']),
];
}
/**
* @param array $input
* @param null $search_value
* @param null $strict
* @return array
*/
public function array_keys(array $input, $search_value = null, $strict = null)
{
return array_keys($input, $search_value, $strict); //here we are simply returning PHP's built-in array_keys function.
}
/**
* @return string
*/
public function getName()
{
return 'st_web_extension';
}
}