use Symfony\Component\HttpFoundation\Session\Session;
...
public function __construct()
{
//echo ini_get('session.auto_start'); die;
$this->session = new Session();
/**
* @Route("/", name="registration_index")
* @Route("/user/registration", name="registration")
* @Method("GET")
*/
public function indexAction()
{
//$this->session->getFlashBag()->add('notice', 'Profile updated');
$errors = $this->session->getFlashBag()->get('notice', array());
print_r($errors);
return $this->render('registration.html.twig', ['errors' => $errors]);
}
/**
* @Route("/user/registration", name="post_registration")
* @Method("POST")
* @return mixed
*/
public function postAction()
{
//$this->session->getFlashBag()->add('errors', 'hahaha');
$this->session->getFlashBag()->add('notice', 'Profile updated');
return $this->redirectToRoute('registration');
}
如果注册失败,我会希望在输入字段附近显示错误消息。试图使用session flashdata。
当用户转到postAction方法时,他被重定向到indexAction。但是
print_r($errors);
打印空数组。这是为什么?没有重定向 - 它可以正常工作。
答案 0 :(得分:0)
这不是symfony问题,而是php服务器问题。即使是没有symfony的php手册中的代码示例也无效。
我正在运行这样的服务器:
php -S 0.0.0.0:8000
由于某些原因,会话无法解决问题。
当我开始使用nginx服务器时,会话开始工作。
答案 1 :(得分:0)
您是否有理由不使用symfony Forms来获取此功能? Symfony表格非常适合注册页面。 顺便说一句,如果你在控制器中这样做,那么你不需要构造函数方法。而是从Request-> getSession()
获取会话答案 2 :(得分:0)
我在评论中确认WebCookie sais:如果您需要在控制器中添加Flash消息,请在控制器中使用$this->addFlash()
。
请注意,您还可以使用以下会话服务:$this->get('session')->getFlashBag()->add()
了解更多信息Flash messages。