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 参数指定每行元素个数 )