[英]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.