簡體   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