我在控制器中有Yii2 删除操作,我需要通过POST方法使用index.php
变量重定向到id
。这就是我使用GET方法的方法:
public function actionDelete($id)
{
$this->findModel($id)->delete();
return $this->redirect(['index?id=' . $id]);
}
如何使用POST方法重定向?
答案 0 :(得分:2)
您不能使用POST
方法重定向,因为它是Response::redirect()
的快捷方式,该方法定义为
此方法在当前响应中添加一个“ Location”标头。
您可以通过ajax调用actionDelete
并从操作到ajax调用响应success
或failure
,以实现所需的效果。 id
使用$.post()
。
例如,考虑以下代码,在该代码上有一个按钮,该按钮上绑定了click
事件并获取需要删除的记录的ID,它既可以位于隐藏字段中,也可以发送向actionDelete
的请求,如果一切正常,我们将使用$.post()
提交ID。
$js = <<< JS
$("#delete").on('click',function(){
var id = $("#record_id").val();
$.ajax({
url:'/controller/action',
method:'post',
data:{id:id},
success:function(data){
if(data.success){
$.post('/controller/action',{id:data.id});
}else{
alert(response.message);
}
}
});
});
JS;
$this->registerJs($js,\yii\web\View::POS_READY);
echo Html::hiddenInput('record_id', 1, ['id'=>'record_id']);
echo Html::button('Delete',['id'=>'delete']);
您的actiondelete()
应该如下所示
public function actionDelete(){
$response = ['success'=>false];
$id = Yii::$app->request->post('id');
Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
try{
$this->findModel($id)->delete();
$response['success'] = true;
$response['id'] = $id;
}catch(\Exception $e){
$response['message'] = $e->getMessage();
}
return $response;
}
答案 1 :(得分:1)
我认为不可能,请参见以下链接: