我无法将自定义表单重定向到特定操作。
我正在尝试的是
<?= 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变量。
我该怎么做?
感谢。
答案 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
。