2014-01-20 20 views
11

Ich versuche, Elemente aus dem Laravel-Sitzungs-Array zu löschen, aber bisher fehlte es mir.Elemente aus dem Laravel-Sitzungs-Array löschen

Ich speichere meine Werte in einer Session-Array mit der Session :: push() -Methode:

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')); 

ich die Werte wie normale Arrays zugreifen können:

 @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 

Aber ich kann nicht finde heraus, wie man sie löscht. Ich habe versucht Session :: forget ('event_date_display') [$ index], aber das löscht das gesamte Array. Dann habe ich Looping und Unscharfschaltung versucht, was auch nicht funktioniert. Jede Hilfe wird geschätzt.

Antwort

25

Wenn Sie Session::forget('event_data_display')[$index] aufrufen, gibt es keinen Punkt, an dem die $index Variable in die forget() Methode übergeben wird. Daher wird Laravel es nicht sehen und den gesamten 'event_data_display'-Index des Session-Arrays aufheben.

Um den Wert an diesem Index unset, müssen Sie wahrscheinlich so etwas wie dies tun:

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

Laravel der Session funktioniert Unterstützung Hinzufügen über einen bestimmten Index wie folgt auf Arrays:

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

so können Sie auch in der Lage sein, diesen Index des Arrays zuzugreifen, wie so:

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

Ich habe es nicht versucht, aber es ist einen Versuch wert.

Wenn Sie Session::get('event_data_display')[$i] nennen, ist der Grund, das funktioniert, weil PHP das Array Wert von Session::get('event_data_display')vor ruft es für den Wert am $i Index gespeichert aussieht.

Wenn Sie Session::forget('event_data_display') aufrufen, kann die Methode forget() nur auf das reagieren, was an sie übergeben wird.

+0

$ event_data_display = Sitzung :: get ('event_date_display'); nicht gesetzt ($ event_data_display [$ index]); Session :: set ('event_data_display', $ event_data_display); Das funktioniert, danke. –

+0

Großartig! Sie sollten dann auf das Häkchen klicken, um es als die richtige Antwort zu akzeptieren. – patricksayshi

+0

Es gibt Ihre Punkte;) –

-2

Es scheint mir, dass Sie versuchen, einen Wert von array zu entfernen, der in sessions gespeichert ist. Um dies zu tun, würde ich denken, dass Sie das Standard-Array unset($array[$key]) tun möchten.

So wäre es so etwas wie unset(Session::$array[$key]); ich glaube.

-2

Verwenden Sie einfach unten Code alle Sitzung in Laravel

$ request-> Session() entfernen -> flush();

+0

Wie ist das ... entfernt anwendbar? – StackOverflowed

Verwandte Themen