我正在尝试通过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)
是空数组。
答案 0 :(得分:1)
您的ID位于$_GET
。 Html::a()
方法的第二个参数用于生成URL,它不定义POST请求的数据。因此,您要向/my-controller/c-update?id=123
网址发送空(无数据)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参数来识别所请求的资源是完全没问题的。