2017-01-25 3 views
0

Ich arbeite an Buchhandlung Projekt, ich habe eine Liste von Büchern mit Knopf In den Warenkorb, klicken Sie auf, die die ID des Buches in Sitzung von einem Namen speichern sollte. Aber das Problem für mich ist, wie kann ich viele dieser ID innerhalb der Sitzung speichern, so dass ich später auf sie innerhalb Foreach zugreifen kann?Wie viele Werte in Symfony-Sitzung im selben Array für viele Anfragen gespeichert werden?

/** 
* @Route("/cart/{bookId}", name="AppBundle_Book_addingToCartAction") 
*/ 
public function addingToCartAction(Request $request, int $bookId) 
{ 
    // getting session 
    $sessionCart = $request->getSession(); 

    // when user click on button Add to Cart , i send ID of book here(and others book IDs), 
    // so i need to save that ID inside a session(i was thinking making of some array 
    // with all this values), so how can I do this,i trying like this: 
    $sessionCart->set('BookIDs', array('Book'.$bookId => $bookId)); 

    return $this->render('AppBundle:Books:shopingCart.html.twig', array(
     'id' => $bookId, 
    )); 
} 
+0

mit dem ich eigentlich nur bookId mit einer anderen bookId austauschen. – dion

+0

Mit anderen Worten, Sie möchten ein Array von BookIds? Ist das korrekt? Und später willst du über dieses Array iterieren und sie verarbeiten - Ist das eine korrekte Annahme? Ich versuche nur, das Problem zu verstehen ... –

+0

Ja, ich habe die Lösung, aber vergessen Sie, die Antwort zu überprüfen. Vielen Dank für die Wiederholung – dion

Antwort

1

Die einfachste Lösung wäre das denke ich.

1) Erstellen Sie einen Schlüssel im Sitzungsobjekt für Ihren Warenkorb, dann können Sie ihn von anderen Dingen in der Sitzung trennen.

2) Holen und setzen Sie den Inhalt auf die gleiche Weise wie jedes andere Array.

3) Behalten Sie einfach die bookId da, es sei denn, Sie brauchen etwas anderes.

/** 
* @Route("/cart/{bookId}", name="AppBundle_Book_addingToCartAction") 
*/ 
public function addingToCartAction(Request $request, int $bookId) 
{ 
    // getting session 
    $sessionCart = $request->getSession(); 

    $cart = $sessionCart->get('cart'); 

    $cart[] = $bookId; 

    $sessionCart->set('cart', $cart); 

    return $this->render('AppBundle:Books:shopingCart.html.twig', array('id' => $bookId)); 
} 
+0

wo sollte ich einen Schlüssel ('Warenkorb') für die Sitzung erstellen, die Sie verwenden --- $ cart = $ sessionCart-> get ('Einkaufswagen'); – dion

+0

Wenn Sie zuerst etwas in den Warenkorb in der Sitzung hinzufügen – RiggsFolly

+0

ok, das ist nützlich, danke :) – dion

0

sollten Sie das Array aus der Sitzungsvariablen abrufen. Und fügen Sie die neue Buch-ID in diesem Array hinzu. Andernfalls überschreiben Sie diese Variable.

$arrayOfBook = $sessionCart->get('BookIDs'); 
if ($arrayOfBook == null){ 
    arrayOfBook = []; 
} 
arrayOfBook[] = $bookId; 
$sessionCart->set('BookIDs', arrayOfBook); 
+0

ja, das haben Sinn, aber wo soll ich einen Sitzungsschlüssel erstellen, kann ich nicht innerhalb dieser Aktion – dion

+0

erstellen tnx, es half mir viel – dion

Verwandte Themen