我收到错误,因为我的标题说,但我无法弄清楚为什么我的变量为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 }}
之类的产品属性。然后我得到上面的错误。
答案 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));
}
更改此函数中的代码,因为在返回后它不会将您的值赋给会话变量。