5

これは私のグリッドビューです。クラスactionColumnから次のように変更しました:

[   'format' => 'html',
            'contentOptions'=>['style'=>'width: 5px;'],
            'value' => function($model) {
                if($model->id == Yii::$app->user->identity->id) {
                    return  Html::a('<i class="glyphicon glyphicon-share-alt"></i>').' '. 
                            Html::a('<i class="glyphicon glyphicon-pencil"></i>', ['update', 'id' => $model->id]).' '.
                            Html::a('<i class="glyphicon glyphicon-trash"></i>', ['delete', 'id' => $model->id], ['data' => ['confirm' => 'Do you really want to delete this element?','method' => 'post']]);
                }
                return '';
            },
        ],

エラーが発生します。

Method Not Allowed (#405)

Method Not Allowed. This url can only handle the following request methods: POST. 

再度変更するとactionColumn機能していましたが、コードを変更したところエラーが発生しました。

4

2 に答える 2

2

あなたができることは、これが actioncoloumn のボタン パラメータを設定することですhttp://www.yiiframework.com/doc-2.0/yii-grid-actioncolumn.html# $buttons-detailを参照

たとえば、次のようなものです。

      'buttons' => [
            'update' => function ($url, $model, $key) {
                if ($model->id == Yii::$app->user->identity->id) {
                    $options = [
                    'title' => Yii::t('yii', 'Update'),
                    'aria-label' => Yii::t('yii', 'Update'),
                    'data-pjax' => '0',
                    ];
                    return Html::a('<span class="glyphicon glyphicon-pencil"></span>', $url, $options);
                }
            },
            'delete' => function ($url, $model, $key) {
                if ($model->id == 6929) {
                    $options = [
                    'title' => Yii::t('yii', 'Delete'),
                    'aria-label' => Yii::t('yii', 'Delete'),
                    'data-confirm' => Yii::t('yii', 'Are you sure you want to delete this item?'),
                    'data-method' => 'post',
                    'data-pjax' => '0',
                    ];
                    return Html::a('<span class="glyphicon glyphicon-trash"></span>', $url, $options);
                }
            },
        ],

しかし、ActionColumn クラスから独自のクラスを拡張して、このような関数を作成します。model->id が user->identity->id であるかどうかに応じて、すべてのボタンを非表示または表示する必要があるというコードを理解しています

protected function renderDataCellContent($model, $key, $index)
{
    if ($model->id == Yii::$app->user->identity->id) {
        return parent::renderDataCellContent($model, $key, $index);
    }
}

お役に立てれば。拡張された Actioncolumn クラスでアプローチを使用します。たとえば、urlCreator 関数が変更されたり、グリッドに対して pjax が有効になっている場合など、すべてのリンクが引き続き機能するためです。

それにもかかわらず、ソジュが上で書いたように、投稿リクエストが機能しなかった理由は正しかった.

于 2015-09-02T19:34:27.683 に答える