Yii2:从提交按钮重定向到特定操作

时间:2015-03-23 19:57:26

标签: php yii2

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

我正在尝试的是

<?= 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,其中包含一个选择下拉字段。

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

我该怎么做?

感谢。

3 个答案:

答案 0 :(得分:7)

您在表单上放置的任何提交按钮都将提交到表单的action参数中指定的url。如果您尚未指定,则Yii将使用表单的当前控制器/操作。如果要覆盖此行为,则需要为表单指定操作。例如

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

答案 1 :(得分:1)

在actionDeleteForm中你有

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

之前

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

这第二条指令永远不会执行,因为你已经返回函数然后控件已经返回给调用者了

答案 2 :(得分:1)

这有点是Joe Miller's answer的注释。如果您应该使用控制器的操作覆盖表单的操作,请确保将值设置为&#39; action&#39;作为一个数组:

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

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