如何让多个按钮提交表单

3.4 版本
维护中的版本

当你的表单包含了一个以上的提交按钮,你需要检测哪个按钮被点击了,以迎合控制器中的程序逻辑。为此,添加一个“Save and add”按钮到表单中:

1
2
3
4
5
6
$form = $this->createFormBuilder($task)
    ->add('task', TextType::class)
    ->add('dueDate', DateType::class)
    ->add('save', SubmitType::class, array('label' => 'Create Task'))
    ->add('saveAndAdd', SubmitType::class, array('label' => 'Save and Add'))
    ->getForm();

在你的控制器中使用isClicked()方法来判断“Save and add”按钮是否被点击:

1
2
3
4
5
6
7
8
9
10
if ($form->isValid()) {
    // ... perform some action, such as saving the task to the database
    // ... 进行一些操作,比如将task入库
 
    $nextAction = $form->get('saveAndAdd')->isClicked()
        ? 'task_new'
        : 'task_success';
 
    return $this->redirectToRoute($nextAction);
}

本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。

登录symfonychina 发表评论或留下问题(我们会尽量回复)