Sto costruendo un negozio online piuttosto semplice in SilverStripe. Sto scrivendo una funzione per rimuovere un articolo dal carrello (order
nel mio caso).Annulla sessione in SilverStripe
La mia configurazione:
mio punto finale sta tornando JSON alla vista per l'uso in Ajax.
public function remove() {
// Get existing order from SESSION
$sessionOrder = Session::get('order');
// Get the product id from POST
$productId = $_POST['product'];
// Remove the product from order object
unset($sessionOrder[$productId]);
// Set the order session value to the updated order
Session::set('order', $sessionOrder);
// Save the session (don't think this is needed, but thought I would try)
Session::save();
// Return object to view
return json_encode(Session::get('order'));
}
Il mio problema:
Quando ho posto i dati a questo percorso, il prodotto viene rimosso, ma solo temporaneamente, quindi la prossima volta remove si chiama, la voce precedente è tornato.
Esempio:
oggetto Order:
{
product-1: {
name: 'Product One'
},
product-2: {
name: 'Product Two'
}
}
Quando ho posto per rimuovere product-1
ricevo il seguente:
{
product-2: {
name: 'Product Two'
}
}
che sembra avere funzionato, ma poi cerco di rimuovere product-2
con e ottenere questo:
{
product-1: {
name: 'Product One'
}
}
Il FIGLIO DI A B è tornato! Quando recupero l'intero carrello, contiene ancora entrambi.
Come si attacca lo order
?
Ah bastardo! Ho pensato che potrebbe essere il caso, sembra un po 'di supervisione ... Potrei avere una richiesta di pull per un metodo non impostato. Ad ogni modo, funziona perfettamente ora. – nickspiel