php - How to control template in gridview yii2 advanced template? -
i want give if condition control action buttons(view, edit , delete) in template attribute
, add new buttons. have code, wrong:
[ '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'), ]); }, ], } }, ],
but got error :
object of class closure not converted string
i using session object parameter in function. how fix that, or perfect way check if condition?
don't use anonymous function
'template'=>function ( ... ) {}
but call external function or directly use proper assigment code eg:
'template'=> (if($session->get('usertype') != 'admin')) ? '{view}{update}{delete}' : '{view}{update}{delete}{activate}{deactivate}', public function mytemplate($session){ .... return yourresult; }
then
'template'=> mytemplate($session),
Comments
Post a Comment