symfony 3 session flashdata无法正常工作

时间:2016-04-13 09:05:02

标签: symfony

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);

打印空数组。这是为什么?没有重定向 - 它可以正常工作。

3 个答案:

答案 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