如何让GridView按钮更新和删除只对管理员可见?

时间:2017-05-12 15:00:08

标签: yii2

我是Yii2的新手,我有3种user rights

Adminmoderatoruser。我有GridView,我不想为用户显示UpdateDelete按钮,只显示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,
    ]);
}   

我试图根据这个搜索信息,但找不到有用的信息。感谢您提供任何帮助或信息。

2 个答案:

答案 0 :(得分:3)

要实现此目的,您必须使用ActionColum类的属性$visibleButtons

所以:

'visibleButtons' = [
    'update' => Yii::$app->user->can('update'), // or whatever condition
    'delete' => Yii::$app->user->can('update')
]

等等。 visibleButtons数组上的每个键都是按钮的名称。

Yii Framework's guide

答案 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);

} 

                },

            ],

        ],