在我的 Kartik GridView 视图文件中,我尝试处理 ExpandRowColumn 的
detailRowCssClass
属性的函数。无论设置如何(例如应用空函数或返回直接字符串),结果始终相同并返回一个对象。
'detailRowCssClass' => function($data){
if($data->status == 0)
{
return GridView::TYPE_INFO;
}
elseif($data->status == 1)
{
return GridView::TYPE_WARNING;
}
elseif($data->status == 2)
{
return GridView::TYPE_SUCCESS;
}
},
返回一个类
[object Object]
有谁知道解决方法,或者我从根本上缺少什么,因为它不返回字符串?谢谢!
问题是,kartik\grid\ExpandRowColumn类的detailRowCssClass是一个简单字符串而不是闭包。源文件中的相应部分
vendor/kartik-v/yii2-grid/src/ExpandRowColumn.php
:
class ExpandRowColumn extends DataColumn
{
...
/**
* @var string the CSS class for the detail content table row.
*/
public $detailRowCssClass;
...
/**
* @inheritdoc
* @throws InvalidConfigException
*/
public function init()
{
if (!isset($this->detailRowCssClass)) {
$this->detailRowCssClass = $this->grid->getCssClass(GridView::BS_TABLE_INFO);
}
...
$clientOptions = Json::encode(
[
'gridId' => $this->grid->options['id'],
'hiddenFromExport' => $this->hiddenFromExport,
'detailUrl' => empty($this->detailUrl) ? '' : $this->detailUrl,
'onDetailLoaded' => $onDetailLoaded,
'expandIcon' => $this->expandIcon,
'collapseIcon' => $this->collapseIcon,
'expandTitle' => $this->expandTitle,
'collapseTitle' => $this->collapseTitle,
'expandAllTitle' => $this->expandAllTitle,
'collapseAllTitle' => $this->collapseAllTitle,
'rowCssClass' => $this->detailRowCssClass,
'animationDuration' => $this->detailAnimationDuration,
'expandOneOnly' => $this->expandOneOnly,
'enableRowClick' => $this->enableRowClick,
'enableCache' => $this->enableCache,
'rowClickExcludedTags' => array_map('strtoupper', $this->rowClickExcludedTags),
'collapseAll' => false,
'expandAll' => false,
'extraData' => $this->extraData,
]
);
...
}