Экспериментирую с реализацией электронной торговли 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')
));
}
adresse - это массив, содержащий два индекса (livraison и facturation). Я получаю содержание адреса ['facturation'], но не для адреса ['livraison']




Перед использованием убедитесь, что вы инициализировали свою переменную $adresse как массив, как показано ниже:
$adresse = array();
вот он в контроллере: if (! $ session-> has ('adresse')) $ session-> set ('adresse', array ());
Разве
Adresseне является объектом? Если это так, вам следует осмотреть средство доступа к свойству.