im trying to delete items from the Laravel Session Array, but with no luck so far.
I store my values in a Session array using the Session::push() method:
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'));
I can access the values like normal arrays:
@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
But I can't figure out how to delete them. I tried Session::forget('event_date_display')[$index], but this deletes the whole array. Then I tried looping and unsetting, which isn't working either. Any help is appreciated.
When you call Session::forget('event_data_display')[$index]
, there is no point at which that $index
variable gets passed into the forget()
method. So Laravel won't see it, and will unset the entire 'event_data_display' index of the Session array.
To unset the value at that index, you'll probably need to do something like this:
$event_data_display = Session::get('event_date_display');
unset($event_data_display[$index]);
Session::set('event_data_display', $event_data_display);
Laravel's Session does support adding to arrays via a specified index like this:
Session::push('user.teams', 'developers');
So you might also be able to access that index of the array like so:
Session::forget('event_data_display.' . $i);
I haven't tried it but it's worth a shot.
When you call Session::get('event_data_display')[$i]
, the reason that works is because PHP retrieves the array value from Session::get('event_data_display')
before it looks for the value stored at the $i
index.
When you call Session::forget('event_data_display')
, the forget()
method can only act on what is passed to it.
I solve it using the following code. Just pass the value that you want to delete in the array as an "id"
to your controller like the code bellow
public function removeAddTocart(Request $request)
{
$remove = ''.$request->id.'';
if (Session::has('productCart'))
{
foreach (Session::get('productCart') as $key => $value)
{
if ($value === $remove)
{
Session::pull('productCart.'.$key); // retrieving the value and remove it from the array
break;
}
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With