Столбец действия Yii2 GridView не отправляет параметр записи - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь отправить простой параметр сообщения через элемент Html:a() в моем GridView. Но id не достигает действия. Вот что я попробовал (видно из документации):

[
    'class' => 'yii\grid\ActionColumn',
    'template' => '{update} {delete}',
    'buttons' => [
        'update' => function($url, $model){
            return Html::a('<span class="glyphicon glyphicon-edit"></span>', ['c-update', 'id' => $model->id], [
                'data' => [
                    'method' => 'post',
                ],
            ]);
        }
    ]
],

Метод post, и в глаголах контроллера действие c-update настроено на получение только post запросов. var_dump($_POST) в действии есть пустой массив.

1 Ответ

0 голосов
/ 08 мая 2018

Ваш идентификатор в $_GET.Второй аргумент метода Html::a() предназначен для генерации URL, он не определяет данные для запроса POST.Итак, вы отправляете пустой (без данных) POST-запрос на /my-controller/c-update?id=123 URL.

Вы можете легко получить этот идентификатор в своем действии:

public function actionCUpdate($id) {
    // ...
}

Если вы действительно хотите отправить ID в качестве данных POST, вам нужно сделать что-то вроде:

Html::a('<span class="glyphicon glyphicon-edit"></span>', ['c-update'], [
    'data' => [
        'method' => 'post',
        'params' => [
            'id' => $model->id,
        ],
    ],
]);

Но вы, вероятно, не должны этого делать.Потерять контекст легко, если вы отправляете идентификатор измененной записи в виде данных POST (поскольку для каждой записи URL будет одинаковым).Использование параметров GET для идентификации запрашиваемых ресурсов прекрасно.

...