it-swarm.dev

I dati della sessione personalizzata di Joomla vengono sovrascritti

Sto scrivendo un carrello componenti personalizzato e sto utilizzando un post modulo per salvare i dati del carrello nella sessione Joomla.

Funziona inizialmente, ma se l'utente torna indietro per aggiungere un altro elemento, l'elemento originale viene sovrascritto. Il modulo stesso sta semplicemente pubblicando dalla vista prodotti alla vista carrello, quindi ti mostrerò solo come viene recuperato e salvato nella sessione:

$cart = array();
$cart['items'][] = array(
        'action' => $app->input->get('action', 'add', 'STRING'),
        'domain_name' => $app->input->get('chosen_domain', '', 'STRING'),
        'chosen_plan' => $app->input->get('chosen_plan', '', 'STRING'),
        'chosen_location' => $app->input->get('chosen_location', '', 'STRING'),
        'chosen_type' => $app->input->get('chosen_type', '', 'STRING'),
        'chosen_id' => $app->input->get('chosen_id', '', 'INT'),
        'chosen_period' => $app->input->get('chosen_period', '', 'INT')
    );
$session = JFactory::getSession();
$session->set('cart', $cart);
$cart_result = $session->get('cart');

echo "<pre>" . print_r($cart_result, TRUE) . "</pre>";
5
James Shaver

Sembra che tu stia creando un nuovo array di carrelli invece di iniziare con i dati memorizzati.

Prova questo:

$session = JFactory::getSession();
$cart = $session->get('cart',array('items'=>array()));
$cart['items'][] = array(
        'action' => $app->input->get('action', 'add', 'STRING'),
        'domain_name' => $app->input->get('chosen_domain', '', 'STRING'),
        'chosen_plan' => $app->input->get('chosen_plan', '', 'STRING'),
        'chosen_location' => $app->input->get('chosen_location', '', 'STRING'),
        'chosen_type' => $app->input->get('chosen_type', '', 'STRING'),
        'chosen_id' => $app->input->get('chosen_id', '', 'INT'),
        'chosen_period' => $app->input->get('chosen_period', '', 'INT')
    );
$session->set('cart', $cart);
$cart_result = $session->get('cart');

echo "<pre>" . print_r($cart_result, TRUE) . "</pre>";
5
Michael