我在CGridView中有以下数组:
array(
'header' => Yii::t('dataTable', 'Actions'),
'class' => 'CButtonColumn',
'template' => '{action}',
'buttons' => array(
'action' => array(
'label' => '$data["action"]["action"]',
'url' => function($data) use($paramsURI) {
$paramsURI['action'] = $data['action']['action'];
$paramsURI['id'] = $data['id'];
return Yii::app()->createUrl(
"admin/report/transactions", $paramsURI
);
}
)
)
)
我需要在按钮标签上使用$data
,但在'label' => '$data["action"]["action"]'
中,$data
未定义,所以我尝试在'action'中使用闭包,但错误是'htmlspecialchars() expects parameter 1 to be string, object given '
。
任何ideia如何解决这个问题?
答案 0 :(得分:2)
不要使用CButtonColumn,使用'type'=>'raw'
创建简单列,并在此字段中显示您想要的任何内容。
答案 1 :(得分:2)
我认为标签不支持eval表达式。您可以使用visible选项来隐藏和显示这样的数据敏感标签。在下面的案例"行动1"如果$ data [' action'] [' action'] ==" Action 1"和行动2适当。观察'模板'并且'可见'钥匙在这里。
array(
'header' => Yii::t('dataTable', 'Actions'),
'class' => 'CButtonColumn',
'template' => '{action1 action2}',
'buttons' => array(
'action1' => array(
'label' => 'Action 1',
'visible' => '$data["action"]["action"]=="Action 1"',
'url' => function($data) use($paramsURI) {
$paramsURI['action'] = $data['action']['action'];
$paramsURI['id'] = $data['id'];
return Yii::app()->createUrl(
"admin/report/transactions", $paramsURI
);
}
),
'action2' => array(
'label' => 'Action 2',
'visible' => '$data["action"]["action"]=="Action 2"',
'url' => function($data) use($paramsURI) {
$paramsURI['action'] = $data['action']['action'];
$paramsURI['id'] = $data['id'];
return Yii::app()->createUrl(
"admin/report/transactions", $paramsURI
);
}
)
)
)