Symfony2数组到字符串的转换,设置空值


Symfony2 Array to string conversion, set empty value

我正在symfony2中呈现一个分支模板,可以获得一个值为数组类型的变量,但我正在尝试预览该变量,并弹出此错误:

数组到字符串的转换。。。

所以我的问题不是如何打印出数组,而是在trick中是否有可能禁用这个错误,这样当数组出现而无法输出时,设置一个空值。

在config.yml中,在trick下我设置了

strict_variables:false

但这不包括打印阵列。

编辑:

在控制器中,我将这个数组传递给trick,例如:

'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']) }}

您有两个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 %}