Yii2 GridView 操作列不发送 post 参数
Yii2 GridView action column doesn't send post parameter
我正在尝试通过 GridView
中的 Html:a()
元素发送简单的 post 参数。但是 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)
动作中为空数组。
您的 ID 在 $_GET
。 Html::a()
方法的第二个参数用于生成 URL,它没有为 POST 请求定义数据。因此,您正在向 /my-controller/c-update?id=123
URL 发送空(无数据)POST 请求。
您可以在操作中轻松获取此 ID:
public function actionCUpdate($id) {
// ...
}
如果您真的想将 ID 作为 POST 数据发送,您应该这样做:
Html::a('<span class="glyphicon glyphicon-edit"></span>', ['c-update'], [
'data' => [
'method' => 'post',
'params' => [
'id' => $model->id,
],
],
]);
但你可能不应该这样做。当您将已修改记录的 ID 作为 POST 数据发送时,很容易丢失上下文(因为对于每条记录 URL 都是相同的)。使用 GET params 来识别请求的资源是完全没问题的。
我正在尝试通过 GridView
中的 Html:a()
元素发送简单的 post 参数。但是 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)
动作中为空数组。
您的 ID 在 $_GET
。 Html::a()
方法的第二个参数用于生成 URL,它没有为 POST 请求定义数据。因此,您正在向 /my-controller/c-update?id=123
URL 发送空(无数据)POST 请求。
您可以在操作中轻松获取此 ID:
public function actionCUpdate($id) {
// ...
}
如果您真的想将 ID 作为 POST 数据发送,您应该这样做:
Html::a('<span class="glyphicon glyphicon-edit"></span>', ['c-update'], [
'data' => [
'method' => 'post',
'params' => [
'id' => $model->id,
],
],
]);
但你可能不应该这样做。当您将已修改记录的 ID 作为 POST 数据发送时,很容易丢失上下文(因为对于每条记录 URL 都是相同的)。使用 GET params 来识别请求的资源是完全没问题的。