#php #laravel #laravel-5.8 #laravel-session
Вопрос:
Мой сеанс запроса, похоже, не устанавливает сеанс в контроллере. Как вы можете видеть , сказав $request->session()->flash('charge_wallet',$wallet);
, я попытался настроить сеанс charge_wallet
.
Затем в представлении bankGateWay.getToken
я попытался проверить, существует ли сеанс или нет. Но его возвращения как-то не существует! Так что же здесь происходит не так? Как я могу исправить эту проблему?
Контроллер
public function chargeWallet(Request $request, $wallet, $user)
{
try {
$data = $request->validate([
'charge' => 'required|integer|min:1000',
]);
$payment = Payment::create([
'pay_type_id' => '191',
'pay_date' => jdate()->format('Y/m/d'),
'pay_amount' => $data['charge'] * 10,
'pay_ord_id' => '',
'pay_status_id' => '181',
'pay_creator_id' => auth()->user()->usr_id,
]);
$request->session()->flash('charge_wallet', $wallet); // Setting Session
$sendInformation = new BankGateWay($payment->pay_id,
$payment->pay_amount, $payment->created_at->timestamp,
route('returnFromGateCharge'));
return view("bankGateWay.getToken", compact('sendInformation'));
} catch (Exception $e) {
return redirect()->back()->with('error', 'Wrong Data');
}
}
Вид
@if(Session::has('charge_wallet'))
@dd('exists');
@else
@dd('not exists');
@endif
Ответ №1:
public function chargeWallet(Request $request, $wallet, $user)
{
try {
$data = $request->validate([
'charge' => 'required|integer|min:1000',
]);
$payment = Payment::create([
'pay_type_id' => '191',
'pay_date' => jdate()->format('Y/m/d'),
'pay_amount' => $data['charge'] * 10,
'pay_ord_id' => '',
'pay_status_id' => '181',
'pay_creator_id' => auth()->user()->usr_id,
]);
$sendInformation = new BankGateWay($payment->pay_id, $payment->pay_amount, $payment->created_at->timestamp, route('returnFromGateCharge'));
return view("bankGateWay.getToken", compact('sendInformation'))->with('charge_wallet',$wallet);
}catch (Exception $e) {
return redirect()->back()->with('error', 'Wrong Data');
}
}
Ответ №2:
На самом деле, как говорится в документации Laravel, вы можете использовать его для следующих запросов, например, после перенаправления.
Данные, сохраненные в сеансе с использованием этого метода, будут доступны немедленно и во время последующего HTTP-запроса. После последующего HTTP — запроса прошитые данные будут удалены.
Но в своем коде вы хотите показать это в своем представлении, которое рассматривается в том же запросе. Для текущего запроса вы должны использовать now
метод.
$request->session()->now('charge_wallet',$wallet');
Если вы хотите установить на более длительное время, используйте put
метод.
$request->session()->put('charge_wallet',$wallet');