2014-01-20 6 views
11

これはLaravelセッションアレイからアイテムを削除しようとしていますが、これまでのところ運がありません。Laravelセッションアレイからアイテムを削除します

は、私がセッション::プッシュを使用して、セッションの配列で私の値を格納()メソッド:

 @for($i=0;$i<Session::get('dates');$i++) 
      <tr> 
      <td>{{ Session::get('event_date_display')[$i] }}</td> 
      <td>{{ Session::get('event_start_display')[$i] }}</td> 
      <td>{{ Session::get('event_entry_display')[$i] == '' ? '-' : Session::get('event_entry_display')[$i] }}</td> 
      <td>{{ Session::get('event_end_display')[$i] == '' ? '-' : Session::get('event_end_display')[$i] }}</td> 
      <td><a href="{{URL::route('termin-loeschen', $i)}}" class="del"><span class="icon-spam"></span>Loeschen {{ $i }}</a></td> 
      </tr> 
     @endfor 

しかし、私はできません:

Session::push('event_date_display', Input::get('event_date')); 
    Session::push('event_start_display', Input::get('event_start')); 
    Session::push('event_entry_display', Input::get('event_entry')); 
    Session::push('event_end_display', Input::get('event_end')); 

は、私は通常の配列と同様の値にアクセスすることができますそれらを削除する方法を理解します。セッション:: forget( 'event_date_display')[$ index]を試みましたが、これは配列全体を削除します。それから、私はループしたりアンセットしたりしようとしましたが、どちらも動作しません。どんな助けもありがとうございます。

答えて

25

Session::forget('event_data_display')[$index]を呼び出すと、その$index変数がforget()メソッドに渡される時点がありません。だから、Laravelはそれを見ず、Session配列の 'event_data_display'インデックス全体を設定解除します。そのインデックスの値の設定を解除するには

、あなたはおそらくこのような何かをする必要があります

$event_data_display = Session::get('event_date_display'); 
unset($event_data_display[$index]); 
Session::set('event_data_display', $event_data_display); 

Laravelのセッションがサポートは、このような指定されたインデックスを経由して配列にを追加します:

Session::push('user.teams', 'developers'); 

だから、あなたもそうような配列のインデックスにアクセスすることができるかもしれない:

Session::forget('event_data_display.' . $i); 

私はそれを試していないが、それはショットの価値がある。

あなたがSession::get('event_data_display')[$i]を呼び出すとPHPはそれが$iたインデックスに格納された値を探します前Session::get('event_data_display')から配列値を取得しているため、働く理由があります。

Session::forget('event_data_display')に電話すると、forget()メソッドは、それに渡される内容にのみ作用します。

+0

$ event_data_display =セッション:: get( 'event_date_display'); unset($ event_data_display [$ index]); セッション:: set( 'event_data_display'、$ event_data_display); これは、ありがとうございます。 –

+0

素晴らしい!チェックマークをクリックすると正しい答えとして受け入れられます。 – patricksayshi

+0

あなたのポイントがあります;) –

-2

arrayの値をsessionsに保存しようとしているようです。これを行うには、標準配列unset($array[$key])を実行したいと思うでしょう。

だから、unset(Session::$array[$key]);のようなものになると思います。

-2

だけ

$要求 - >セッション()laravel内のすべてのセッションを削除するには、コードの下に使用 - >フラッシュ();

+0

これはどのようにリモートに適用できますか? – StackOverflowed

関連する問題