0

我的请求会话似乎没有在控制器中设置会话。正如你所说的$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
4

2 回答 2

0
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');
        }
    }
于 2021-08-13T12:24:00.807 回答
0

实际上,正如Laravel 文档所述,您可以将它用于下一个请求,例如在重定向之后。

使用此方法存储在会话中的数据将立即可用,并且在随后的 HTTP 请求期间可用。在后续的 HTTP 请求之后,刷出的数据将被删除。

但是在您的代码中,您希望在视图中显示它,这在同一个请求中被考虑。对于当前请求,您应该使用now方法。

$request->session()->now('charge_wallet',$wallet');

如果要设置更长的时间,请使用put方法。

$request->session()->put('charge_wallet',$wallet');
于 2021-08-13T13:28:10.233 回答