it-swarm.com.de

Joomla benutzerdefinierte Sitzungsdaten werden überschrieben

Ich schreibe einen benutzerdefinierten Komponentenwagen und verwende einen Formularbeitrag, um die Wagendaten in der Joomla-Sitzung zu speichern.

Es funktioniert zunächst, aber wenn der Benutzer zurückkehrt, um ein anderes Element hinzuzufügen, wird das ursprüngliche Element überschrieben. Das Formular selbst wird einfach von der Produktansicht in die Warenkorbansicht gepostet. Ich zeige Ihnen also nur, wie es abgerufen und in der Sitzung gespeichert wird:

$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

Es sieht so aus, als würden Sie ein neues Cart-Array erstellen, anstatt mit Ihren gespeicherten Daten zu beginnen.

Versuche dies:

$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