枝杈函数设置为未定义的变量

问题描述 投票:0回答:1

我知道这是很容易检查,如果一个变量定义使用

{# 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 %}
php symfony twig
1个回答
0
投票

作为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';
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.