Symfony2无法使用会话访问NULL变量的属性

时间:2015-04-20 12:21:23

标签: php symfony session

我收到错误,因为我的标题说,但我无法弄清楚为什么我的变量为null。我们的想法是将用户选择的产品保存在会话中,以便我可以在另一个页面中显示它。

这里我根据其ID显示所选产品。我开始会话并保存产品:

public function viewAction($id) {
    $em = $this->getDoctrine()->getManager();
    $product = $em->getRepository('MpShopBundle:Product')->find($id);

    return $this->render('MpShopBundle:Frontend:product_details.html.twig', array(
        'product'=>$product
    ));

    $session = new Session();
    $session->start();

    $session->set('product', $product);
}

在此控制器中,我获得了产品值:

public function summaryAction() {
    $session = $this->getRequest()->getSession();
    $product = $session->get('product');

    $em = $this->getDoctrine()->getManager();
    $products = $em->getRepository('MpShopBundle:Product')->findAll();

    return $this->render('MpShopBundle:Frontend:product_summary.html.twig', array('products' => $products));
}

现在,在我的枝条中,我执行此操作:{% set product = app.session.get('product') %}并尝试获取此{{ product.price }}之类的产品属性。然后我得到上面的错误。

2 个答案:

答案 0 :(得分:1)

尝试按如下所示修改控制器,因为Symfony已作为会话启动:

 public function viewAction($id)
        {

            $em = $this->getDoctrine()->getManager();
            $product = $em->getRepository('MpShopBundle:Product')->find($id);

            $session = $this->getRequest()->getSession();

            $session->set('product', $product);

            return $this->render('MpShopBundle:Frontend:product_details.html.twig', array(
            'product'=>$product
            ));


        } 

答案 1 :(得分:0)

public function viewAction($id)
{
    $em = $this->getDoctrine()->getManager();
    $product = $em->getRepository('MpShopBundle:Product')->find($id);

    $session = $this->getRequest()->getSession();
    $session->set('product', $product);
    return $this->render('MpShopBundle:Frontend:product_details.html.twig', array('product'=>$product));
} 

更改此函数中的代码,因为在返回后它不会将您的值赋给会话变量。