it-swarm.dev

Joomlaカスタムセッションデータは上書きされます

カスタムコンポーネントカートを作成し、フォームの投稿を使用してJoomlaセッションでカートデータを保存しています。

最初は機能しますが、ユーザーが別のアイテムを追加するために戻った場合、元のアイテムは上書きされます。フォーム自体は単に製品ビューからカートビューに投稿しているだけなので、どのように取得してセッションに保存するかを示すだけです。

$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

保存されたデータから開始するのではなく、新しいカート配列を作成しているようです。

これを試して:

$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