yii2 gridview count():参数必须是实现Countable php 7.2的数组或者对象

Posted

技术标签:

【中文标题】yii2 gridview count():参数必须是实现Countable php 7.2的数组或者对象【英文标题】:yii2 gridview count(): Parameter must be an array or an object that implements Countable php 7.2 【发布时间】:2019-04-29 06:15:34 【问题描述】:

错误:

count():参数必须是数组或者实现了Countable的对象

错误来自\vendor\yiisoft\yii2\helpers\Basehtml.php(第1302行)

 $content = Html::tag('tr', implode('', $cells), $this->headerRowOptions);

调用: vendor\yiisoft\yii2\helpers\BaseHtml.php(第 150 行)

$html = "<$name" . static::renderTagAttributes($options) . '>'

依次调用:

if (count($attributes) > 1)  ...

(也在同一个文件中)

问题是:这个错误的根源是什么,如何修复/避免它?

答案包括在内,在下面找到...问题的原因不是很直观。

添加此问题的唯一目的是帮助其他可能在使用 yii2 并升级到 php 7.2 时遇到类似问题的人

【问题讨论】:

【参考方案1】:

在这种情况下出现问题的原因是在 gridview 中,属性 'headerRowOptions' 是由匿名函数设置的:

'headerRowOptions' =>  function ($model, $key, $index, $grid) 
                    return ['style' => 'vertical-align: middle !important;'];
                ,

更改为数组后,错误消失,一切正常:

  'headerRowOptions' => ['style' => 'vertical-align: middle !important;'],

希望这对处于类似情况的人有所帮助。

【讨论】:

还是有问题,因为我希望 headerRowOptions 是一个函数

以上是关于yii2 gridview count():参数必须是实现Countable php 7.2的数组或者对象的主要内容,如果未能解决你的问题,请参考以下文章

FlutterGridView 网格布局 ( GridView.count 构造函数 | crossAxisCount 参数指定每行元素个数 )

Yii2 GridView CheckboxColumn

YII2 Gridview

Yii2 - Gridview 播放下一首歌曲

yii2 gridview 怎么加checkbox

Yii2 GridView 按年份过滤日期