2014-01-20 182 views
11

即時嘗試從Laravel會話數組中刪除項目,但目前還沒有運氣。從Laravel Session數組中刪除項目

我使用會話::推我的值存儲在一個會話陣列()方法:

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

我可以訪問值像正常數組:

 @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 :: 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檢索來自Session::get('event_data_display')前陣值它查找存儲在$i指數值。

當您撥打Session::forget('event_data_display')時,forget()方法只能處理傳遞給它的內容。

+0

$ event_data_display = Session :: get('event_date_display'); 未設置($ event_data_display [$ index]); Session :: set('event_data_display',$ event_data_display); 這工作,謝謝。 –

+0

太棒了!您應該點擊複選標記接受它作爲正確答案。 – patricksayshi

+0

有你的要點;) –

-2

在我看來,您試圖從存儲在sessions中的array中刪除一個值。要做到這一點,我會認爲你想要做標準陣列unset($array[$key])。我相信這就像unset(Session::$array[$key]);

-2

只需使用下面的代碼刪除所有會議laravel

$請求 - >會話() - >刷新();

+0

這是如何...遠程適用? – StackOverflowed