我想在template attribute
中给出if条件来控制动作按钮(查看,编辑和删除),并添加新按钮。
我有这个代码,但有些不对劲:
[
'class' => 'yii\grid\ActionColumn',
'template'=>function ($session){
if($session->get('userType') != 'admin'){
'{view}{update}{delete}';
}else{
'template' => '{view}{update}{delete}{activate}{deactivate}',
'buttons' => [
'deactivate' => function ($url,\backend\models\Document $model) {
if($model->Status==1)
return Html::a('<span class="glyphicon glyphicon glyphicon-remove"></span>', $url, [
'title' => Yii::t('app', 'deactivate'),
]);
},
'activate' => function ($url, $model) {
if($model->Status==0)
return Html::a('<span class="glyphicon glyphicon glyphicon-ok"></span>', $url, [
'title' => Yii::t('app', 'activate'),
]);
},
],
}
},
],
但我收到了这个错误:
Object of class Closure could not be converted to string
我正在使用会话对象作为函数中的参数。 如何解决这个问题,或者检查条件的最佳方法是什么?
答案 0 :(得分:1)
不要使用匿名功能
'template'=>function ( ... ) {}
但是可以通过代码调用外部函数或直接使用适当的分配,例如:
'template'=> (if($session->get('userType') != 'admin')) ? '{view}{update}{delete}' : '{view}{update}{delete}{activate}{deactivate}',
public function myTemplate($session){
....
return yourResult;
}
然后
'template'=> myTemplate($session),