我是Yii2的新手,我有3种user rights
:
Admin
,moderator
和user
。我有GridView
,我不想为用户显示Update
和Delete
按钮,只显示GridView
。我该怎么办?
这是我的actionCreate
,有一个输入表单:
public function actionCreate()
{
$model = new Project();
$model->scenario = Project::SCENARIO_CREATE;
if ($model->load(Yii::$app->request->post())) {
if ($model->save()) {
Yii::$app->getSession()->setFlash('success', Yii::t('app', 'Skelbimas sėkmingai pridėtas!'));
return $this->redirect(['index']);
}
}
return $this->render('create', [
'model' => $model,
]);
}
我试图根据这个搜索信息,但找不到有用的信息。感谢您提供任何帮助或信息。
答案 0 :(得分:3)
要实现此目的,您必须使用ActionColum类的属性$visibleButtons。
所以:
'visibleButtons' = [
'update' => Yii::$app->user->can('update'), // or whatever condition
'delete' => Yii::$app->user->can('update')
]
等等。 visibleButtons数组上的每个键都是按钮的名称。
答案 1 :(得分:0)
.........
[
'class'=>'yii\grid\ActionColumn',
'template'=> '{view} {update} {delete} ',
'buttons'=> [
'update'=> function($url,$model) {
if (Yii::$app->user->can('admin')) {
returnHtml::a( '<span class="glyphicon glyphicon-pencil"></span>', $url);
}
},
'delete'=>function($url,$model,$key) {
if (Yii::$app->user->can('admin')) {
returnHtml::a('delete', $url);
}
},
],
],