j'essaie de supprimer des éléments de la Laravel Session Array, mais sans succès jusqu'à présent.
Je stocke mes valeurs dans un tableau de session à l'aide de la méthode Session :: Push ():
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'));
Je peux accéder aux valeurs telles que les tableaux normaux:
@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
Mais je n'arrive pas à comprendre comment les supprimer. J'ai essayé Session :: forget ('event_date_display') [$ index], mais cela supprime tout le tableau. Ensuite, j'ai essayé de boucler et de désactiver, ce qui ne fonctionne pas non plus. Toute aide est appréciée.
Lorsque vous appelez Session::forget('event_data_display')[$index]
, il n'y a aucun moment où cette variable $index
est transmise à la méthode forget()
. Donc, Laravel ne le verra pas et annulera la totalité de l'index 'event_data_display' du tableau Session.
Pour supprimer la valeur de cet index, vous devrez probablement faire quelque chose comme ceci:
$event_data_display = Session::get('event_date_display');
unset($event_data_display[$index]);
Session::set('event_data_display', $event_data_display);
Laravel's Session supporte en ajoutant aux tableaux via un index spécifié comme ceci:
Session::Push('user.teams', 'developers');
Ainsi, vous pourrez également accéder à cet index du tableau comme suit:
Session::forget('event_data_display.' . $i);
Je n'ai pas essayé mais ça vaut le coup.
Lorsque vous appelez Session::get('event_data_display')[$i]
, la raison qui fonctionne est que PHP récupère la valeur du tableau à partir de Session::get('event_data_display')
before il recherche la valeur stockée dans l'index $i
.
Lorsque vous appelez Session::forget('event_data_display')
, la méthode forget()
ne peut agir que sur ce qui lui est transmis.
Ajouter
session()->save();
après avoir terminé la session. Alors seules les valeurs de la session sont supprimées.
Je le résous en utilisant le code suivant. Il suffit de transmettre à votre contrôleur la valeur que vous souhaitez supprimer dans le tableau sous la forme d'un "id"
, comme le code ci-dessous.
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;
}
}
}
}