Yii2:redirect 到提交按钮的特定操作

Yii2:redirect to specific action from submit button

我无法将自定义表单重定向到特定操作。

我正在尝试的是

<?= Html::submitButton( 'delete-selected' ,['class' => 'btn btn-primary']) ?>

这里 delete-selected 是我在控制器中的自定义操作 appointment

我也试过这样:

public function actionDeleteForm()
    {
        return $this->render('delete');
        return $this->redirect(['delete-selected']);
    }

public function actionDeleteSelected()
{
    Appointment::deleteAll(['doctor_name' =>4]);
    return $this->redirect(['index']);
} 

我想做的实际上是使用表单删除一些记录。表单名称是 delete,有一个 select 下拉字段。

我想 post 数据操作 deleteselected 并在删除查询中使用 $_POST 变量。

我该怎么做?

谢谢。

在 actionDeleteForm 中你有

return $this->render('delete');

之前

return $this->redirect(['delete-selected'])

第二条指令将永远不会执行,因为您已经对函数进行了 return,然后控制权已经 return 给了调用者

您放置在表单上的任何提交按钮都会提交到表单的操作参数中指定的 url。如果你没有指定一个,那么 Yii 将使用当前的 controller/action 形式。如果您想覆盖此行为,则需要为表单指定一个操作。例如

$form = ActiveForm::begin([
    'action' => 'appointment/delete-selected'
]);

这是 的注释。如果您应该使用控制器的操作覆盖表单的操作,请确保将 'action' 的值设为数组:

$form = ActiveForm::begin([
'action' => ['appointment/delete-selected']
]);

它将操作视为控制器 appointment 中操作 delete-selected 的路径。