Php Symfony2数组到字符串转换,设置空值
我正在symfony2中呈现一个细枝模板,可能会获取一个值为数组类型的变量,但我正在尝试预览该变量,出现以下错误: 数组到字符串转换 因此,我的问题不是如何打印数组,而是twig中是否可以禁用此错误,以便在数组出现且无法输出时,设置空值 在config.yml中,我在细枝下设置了 严格变量:false 但这不包括打印阵列 编辑: 在控制器中,我将此数组传递给twig,例如:Php Symfony2数组到字符串转换,设置空值,php,arrays,symfony,twig,output,Php,Arrays,Symfony,Twig,Output,我正在symfony2中呈现一个细枝模板,可能会获取一个值为数组类型的变量,但我正在尝试预览该变量,出现以下错误: 数组到字符串转换 因此,我的问题不是如何打印数组,而是twig中是否可以禁用此错误,以便在数组出现且无法输出时,设置空值 在config.yml中,我在细枝下设置了 严格变量:false 但这不包括打印阵列 编辑: 在控制器中,我将此数组传递给twig,例如: 'data' => array( 'description' => array(
'data' => array(
'description' => array(
'desc1',
'desc2'
)
);
在twig中,我试图打印{{data['description']}},但出现以下错误:
数组到字符串转换
这是必须弹出的正常错误,但是如果我试图打印它,我需要弹出一个无错误,但我需要不打印任何内容(空值),就像尝试打印一个不存在的变量,其中twig设置为
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']) }}
您有两个描述:desc1
和desc2
,要打印什么?如果两者都必须使用此符号(例如)
一般而言:
{% for desc in data['description'] %}
{{ desc }}
{% endfor %}
编辑
好的,现在我(从你的评论中)明白了:
要打印数组,您可以使用
print\u r
、var\u export
或var\u dump
,但您应该使用数组索引访问其中的数据。发布您的阵列以演示如何访问数据。。。是否要打印数组的内容,或者如果它是数组,则不显示任何内容?请修复错误,不要绕过它。回送数组并尝试抑制它是不可接受的。请添加代码(最简单的示例)为什么不在数组上迭代并打印出每个值?我已经编辑了我的问题我想打印{{data['description']}},我不想看到数组到字符串转换的错误。。。要打印的只是一个空值。data['description']
不是一个标量值,所以“我想打印出来”是一个无意义的语句是的,这就是问题所在,我需要在twig中添加一些内容,如果我试图回显数组,则响应为空值(字符串)是另一种方式,因为我可以做很多这样的事情,如果每次都要做的话,那就不那么酷了。类似于:严格的数组:false@user3686982:您必须使用迭代语句,如for
或while
。顺便说一句,这回答了你的问题
{% for desc in data['description'] %}
{{ desc }}
{% endfor %}
{% if data['description'] is iterable %}
//echo here an empty string
{% else %}
{{ data['description'] }}
{% endif %}