Symfony2 Array转换为字符串,设置空值

时间:2014-09-11 10:19:21

标签: php arrays symfony twig output

我在symfony2中渲染一个twig模板,并且它可以获得一个具有数组类型值的变量,但我正在尝试预览变量并且弹出此错误:

  

数组到字符串转换......

所以我的qustion不是如何打印出数组,但是可以在twig中禁用此错误,所以当一个数组出现并且无法输出时,设置一个空值。

在config.yml中,在twig下我已经设置了

  

strict_variables:false

但这个剂量不包括打印阵列。

编辑:

在控制器中,我将此数组传递给twig,例如:

'data' => array(
            'description' => array(
                  'desc1', 
                  'desc2'
            )
         );

在树枝上,我正在尝试打印{{data ['description']}},我收到以下错误:

  

数组到字符串转换......

这是必须弹出的正常错误,但我需要如果我尝试打印这个没有错误来弹出,而是我需要打印任何东西(空值),就像尝试用树枝打印一个非现有变量一样用

设置
strict_variables: false

解答:

制作自定义功能:

public function getFunctions()
{
    return array(
       'to_string' => new \Twig_Function_Method($this, 'toString')
    );
}

public function toString($data) {
    if(is_array($data)) {
        return '';
    }
    return $data;
}

在树枝模板中:

{{ to_string(data['description']) }}

1 个答案:

答案 0 :(得分:0)

你有两个desc:desc1desc2,你想要打印什么?如果你必须使用这种表示法(例如)

{{ data['description'][desc1] }} - {{ data['description'][desc2] }}

更多信息:

{% for desc in data['description'] %}
    {{ desc }}
{% endfor %}

<击>

修改

好的,现在我得到了它(来自你的评论):

{% if data['description'] is iterable %}
    //echo here an empty string
{% else %}
    {{ data['description'] }}
{% endif %}