感谢你来到这里
                我真的很激动
                盼望,能有你的支持
            捐赠可扫描二维码转账支付
                 
                    支付宝扫一扫付款
 
                    微信扫一扫付款
(微信为保护隐私,不显示你的昵称)
默认情况下,表单想要提交,需要将一个HTTP的POST请求,提交到这个被渲染表单的同一URL下。有时你想改变这些参数。你有一些不同的方法可以实现它。
如果你使用FormBuilder去构建你的表单,你就可以使用setAction()和setMethod():
| 1 2 3 4 5 6 7 | $form = $this->createFormBuilder($task)
    ->setAction($this->generateUrl('target_route'))
    ->setMethod('GET')
    ->add('task', TextType::class)
    ->add('dueDate', DateType::class)
    ->add('save', SubmitType::class)
    ->getForm(); | 
这个例子假设您已经创建了一个名为target_route的路由,指向处理表单的控制器。
当使用表单类型类时,你就能够把action和method作为表单配置传入:
| 1 2 3 4 5 6 7 | use AppBundle\Form\Type\TaskType;
// ...
 
$form = $this->createForm(TaskType::class, $task, array(
    'action' => $this->generateUrl('target_route'),
    'method' => 'GET',
)); | 
最后,你可以通过form()和form_start()去覆盖模版中的action和method:
| 1 2 | {# app/Resources/views/default/new.html.twig #}
{{ form_start(form, {'action': path('target_route'), 'method': 'GET'}) }} | 
| 1 2 3 4 5 | <!-- app/Resources/views/default/newAction.html.php -->
<?php echo $view['form']->start($form, array(
    'action' => $view['router']->path('target_route'),
    'method' => 'GET',
)) ?> | 
如果这些表单方法不是GET或者POST,但是是PUT、PATCH和DELETE,那么symfony会插入一个名字为_method的隐藏字段来存储方法。如果form表单提交一个普通的POST请求,symfony路由会检测_method参数并解析PUT、PATCH和DELETE请求。参见http_method_override选项。
本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。