【问题标题】:Symfony2 Array to string conversion, set empty valueSymfony2 数组到字符串的转换,设置空值
【发布时间】:2014-09-11 10:19:21
【问题描述】:

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

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

所以我的问题不是如何打印出数组,而是在twig中是否可以禁用这个错误,所以当一个数组来了并且无法输出时,设置一个空值。

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

strict_variables: 假

但这不包括打印数组。

编辑:

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

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

【问题讨论】:

  • 要打印数组,您可以使用print_rvar_exportvar_dump,但您应该使用数组索引访问其中的数据。发布您的数组以向您展示如何访问数据
  • 我很困惑...您是要打印数组的内容,还是如果它是数组则什么也不显示?
  • 修复错误,不要四处走动。回显数组并尝试抑制它是不可接受的。请添加您的代码(最小示例)
  • 为什么不遍历数组并打印出每个值?
  • 我已经编辑了我的问题

标签: php arrays symfony twig output


【解决方案1】:

你有两个描述: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 %}

【讨论】:

  • 我想打印 {{ data['description'] }} 并且我不希望数组到字符串转换的错误...只是要打印一个空值。
  • data['description'] 不是标量值,所以“我想打印出来”是一句废话
  • 是的,这就是问题所在,我需要 twig 中的一些东西,如果我试图回显一个数组,则响应为空值(字符串)
  • 他们是另一种方式吗,因为我可以拥有很多这样的东西,如果我每次都必须这样做的话,那不是很酷。类似于:strict_arrays: false
  • @user3686982:您必须使用像forwhile 这样的迭代语句。顺便说一句,这回答了你的问题
猜你喜欢
  • 2013-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多