當前可以使用以下兩個選項之一管理用于確認的表單重定向:
1/ Flash訊息:在表單頁面或其他頁面上使用flashbag,如下所示:
$this->addFlash('success', 'Thank you');
return $this->redirectToRoute('confirmation_page');
2/ 確認頁面:使用這樣的專用確認:
return $this->redirectToRoute('confirmation_page');
但是使用選項 2 可以直接從瀏覽器訪問確認頁面,而無需之前提交表單。我目前正在使用 flashbag 機制通過添加 $this->addFlash('success', true); 來修復它。在表單中重定向之前,然后檢查確認頁面中的 flashbag 內容,以便從表單成功重定向后,只能訪問一次路由。
有沒有最佳實踐或更合適的方法來管理它?
/**
* @Route("/confirmation", methods="GET", name="confirmation_page")
*/
public function confirmation(): Response
{
$flashbag = $this->get('session')->getFlashBag();
$success = $flashbag->get("success");
if (!$success) {
return $this->redirectToRoute('app_home');
}
return $this->render('templates/confirmation.html.twig');
}
uj5u.com熱心網友回復:
Flash Message 旨在顯示訊息。相反,在您的應用程式中使用會話。
提交確認表單時,在重定向前的會話中創建一個變數
$this->requestStack->getSession()->set('verifyed',true);
return $this->redirectToRoute('confirmation_page');
在您的方法中使用創建的變數
public function confirmation(): Response
{
if (!$this->requestStack->getSession()->get('verifyed')) {
return $this->redirectToRoute('app_home');
}
return $this->render('templates/confirmation.html.twig');
}
不要忘記將 RequestStack 注入你的控制器
private RequestStack $requestStack;
public function __construct(RequestStack $requestStack)
{
$this->requestStack = $requestStack;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/479591.html
