我知道这是很容易检查,如果一个变量定义使用
{# defined works with variable names #}
{% if foo is defined %}
...
{% endif %}
并设置一个变量是否它被利用未定义:
{% set foo = 'bar' %}
有没有一种方法来设置变量为未定义?我有一个传递到树枝HTML文件中的变量,它并不总是过去了,我对面的情况下也可能是空出来。当它是空的,我想它正确设置为undefined,因为逻辑语句通过档案工作的其余部分,它是第一个定义的疼痛测试,然后空每次使用这个变量的时间第二次。
我碰到这个conversation,想知道其他人有没有解决任何未设置变量,或更好的方法来进行,可以是未定义或为空的变量设置。
更新的代码:我的工作我的后台管理部分。由于种种原因,我没有使用SonataAdmin并希望建立自己的。在这方面,我可以查看汇总的所有用户,并在一些网页,我可以查看和编辑用户的配置文件的部分。我有一个包含链接到页面汇总,然后包含链接到用户的个人资料部分的另一行头树枝文件。
对于我的路线admin_profile_show - 我需要包括用户加载正确的页面,但如果用户是空在这里,这将导致一个错误,因为它不能达到用户名属性。
{% if user is defined %}
{{ path('admin_profile_show', { 'username': user.username}) }}
...other routes and links
{% endif %}
我想我真正的问题是,我让其中的用户名可以为空,因此它被定义,但空的情况。之前我更改其他文件的逻辑,我想知道,如果有,将工作如下解封变量:
{% if user is null %}
{% unset user %}
{% endif %}
作为F21上面提到的,它不是在模板中的良好做法modyifing数据,但如果你真的想这个,你可以简单地扩展枝条做这项工作(我的意思是,你可以创建你自己的extending it functons),下面是一个简单的例:
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';
}
}