symfony3 session参数:adress [' livraison']给出null值

时间:2018-05-30 13:57:07

标签: symfony

我正在尝试实施电子商务" DevAndClick"。我无法检索传递和帐单地址,会话address[livraison]显示空值。我被封锁了。有没有人遇到过这个可以帮助我的问题?

以下是Twig视图形式的代码:

<form action="{{path('validation')}}" method="POST">
                          <h4>Adresse de livraison</h4>

                          {% for adresse in utilisateur.adresses %}
                                <label class="radio">
                                    <input type="radio" name="livraison"  value="{{adresse.id}}" {% if loop.index0 == 0 %} checked="checked" {% endif %} >
                                   {{adresse.adresse}} , {{adresse.cp}} {{adresse.ville}}-{{adresse.pays}}<a href=" {{path('livraisonAdresseSuppression', {'id' :adresse.id} )}} "><i class="icon-trash"></i></a> <br />
                                   {{adresse.prenom}} {{adresse.nom}}
                                </label>
                          {% endfor %}
                                <br /><br />
                          <h4>Adresse de facturation</h4>

                          {% for adresse in utilisateur.adresses %}
                                <label class="radio">
                                    <input type="radio" name="facturation"  value="{{adresse.id}}" {% if loop.index0 == 0 %} checked="checked" {% endif %} >
                                   {{adresse.adresse}} , {{adresse.cp}} {{adresse.ville}}-{{adresse.pays}}<a href=" {{path('livraisonAdresseSuppression', {'id' :adresse.id} )}} "><i class="icon-trash"></i></a> <br />
                                   {{adresse.prenom}} {{adresse.nom}}
                                </label>
                          {% endfor %}
                          <button class="btn btn-primary">Valider mes adresse </button>
</form>

以下是我的控制器的两种方法:

public function setLivraisonOnSession(Request $request)
    {
        $session = $request->getSession();
        if(!$session->has('adresse')) $session->set('adresse',array());
        $adresse = $session->get('adresse');
        if($request->request->get('livraison') != null && $request->request->get('facturation') != null )
        {
            $adresse['livraison'] = $request->request->get('livrasion');
            $adresse['facturation'] = $request->request->get('facturation');
        }
        else{
            return $this->redirect($this->generateUrl('validation'));
        }
        $session->set('adresse',$adresse);
        return $this->redirect($this->generateUrl('validation'));
    }

     public function validationAction(Request $request)
    {
         if($request->isMethod('POST'))
            $this->setLivraisonOnSession($request);
        $em = $this->getDoctrine()->getManager();
        $session = $request->getSession();
        $adresse = $session->get('adresse');
       //var_dump($adresse['livraison']);
      // die();
        $produits = $em->getRepository('EcommerceBundle:Produits')->findArray(array_keys($session->get('panier')));
        $livraison = $em->getRepository('EcommerceBundle:UtilisateursAdresses')->find($adresse['livraison']);
        $facturation = $em->getRepository('EcommerceBundle:UtilisateursAdresses')->find($adresse['facturation']);

        return $this->render('EcommerceBundle:Default/panier/layout:validation.html.twig',array(
            'produits' => $produits,
            'livraison'=> $livraison,
            'facturation'=>$facturation,
            'panier'=>$session->get('panier')
        ));
    }

1 个答案:

答案 0 :(得分:0)

确认您在使用之前已将变量$adresse初始化为数组,如下所示:

$adresse = array();