3
public function action_adicionar_item()
{
    $lista_item_pedido = array();
    $x = 0;
    if(Session::has('lista_item_pedido'))
    {
        foreach(Session::get('lista_item_pedido') as $item)
        {
            $lista_item_pedido[$x] = $item;
            $x++;
        }
    }

    $lista_item_pedido[$x] = Input::all();

    Session::put('lista_item_pedido', $lista_item_pedido);
}

このメソッドを初めて実行したときは、セッションが作成されていないため、if は無視され、配列値が設定され、名前と値でセッションを定義する必要がありますが、そうではありません。

2回目に呼び出すと、セッションが作成されますが、値がありません。奇妙なことです。

最初の実行時にセッションが空の配列で作成される理由は何ですか?

Input::all()正しい値を返しています。

storage/sessions/ファイルが作成され、値が正しく設定されていることを確認しました。

s:17:"lista_item_pedido";a:1:{i:0;a:7:{s:2:"id";s:3:"162";s:10:"referencia";s:12:"112233445566";s:9:"descricao";s:6:"Sapato";s:5:"grade";s:14:"Grade 41 ao 46";s:8:"grade_id";s:1:"4";s:5:"valor";s:5:"50.00";s:10:"fornecedor";s:2:"30";}}}s:13:"last_activity";i:1340395110;}

これは、メソッドを初めて実行したときに作成されるため、作成されますが、2 つの値を追加した場合にのみアクセスできません。この場合、最初の値は無視されます。

4

1 に答える 1

3

代わりに$_SESSIONを使用してみてください...

于 2012-06-25T11:44:07.000 に答える