2016-02-05 2 views
1

Я хочу дать, если условие для управления кнопками действия (просмотр, редактирование и удаление) в template attribute, а также добавить новые кнопки. У меня есть этот код, но что-то не так:Как контролировать шаблон в gridview yii2 расширенный шаблон?

[ 
    '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 

Я использую объект сессии в качестве параметра функции. как исправить это, или что является идеальным способом проверить с условием?

ответ

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), 
Смежные вопросы