Laravelセッション配列からアイテムを削除しようとしていますが、今のところ運がありません。
Session :: Push()メソッドを使用して、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]を試しましたが、これにより配列全体が削除されます。次に、ループと設定解除を試みましたが、どちらも機能しません。どんな助けでもありがたいです。
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')
から配列値を取得するbeforeが検索するため、機能する理由は_$i
_インデックスに格納されている値。
Session::forget('event_data_display')
を呼び出すと、forget()
メソッドは渡されたものに対してのみ機能します。
次のコードを使用して解決します。削除する値を配列で"id"
として次のコードのようにコントローラーに渡すだけです
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;
}
}
}
}
追加
session()->save();
セッションをクリアした後。次に、セッションの値のみが削除されます。