繁体   English   中英

symfony2:使用表单更改URL路由参数

[英]symfony2: change url route parameter with a form

我需要能够让用户在应用程序中选择一些参数。 因此,我创建了一个表格,让我们例如选择一年。

我将表单的操作更改为GET ,并将其name更改为null 提交表单后,这会在网址中添加经典的url-query-string-parameter。

但是我正在使用symfony-routes,我想让提交表单的结果更改route-parameter。

为了清楚起见,下面是一个示例:假设我使用这样的路由:

@Route("/assignment/{year}", name="assignment")
function indexAction($year){...}

然后,我想通过提交像这样的表格来更改年份路线参数。

$this->get('form.factory').createNamedBuilder(null, FormType::class)
  ->setAction('get')
  ->add('year', ChoiceType::class, ['choices' => [2016 => 2016, 2022 => 2022]])
  ->add('submit', SubmitType::class);

有没有一种方法可以将其存档而无需添加额外的JavaScript? 如果无法存档,最好的选择方式是什么? 删除路由参数,仅“手动”处理表单数据?

如果该表单也位于/assignment/{year}路线上,则可能是一个主意。

indexAction()函数中,您可以检查表单是否已提交,如果已提交,请重定向回表单中选择年份的路线。

//SomethingController.php
public function indexAction($year, Request $request)
{
    //...
    $form = $this->get('form.factory'). // You know the rest

    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) {

        // Do some stuff depending on values of form if you'd like, and then

        $this->redirectToRoute('assignment', ['year' => $year]);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM