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