0

我正在使用 Laravel 5.8 开发一个在线商店项目,在这个项目中我添加了一个复选框,用于检查用户是否想通过他的在线钱包支付价格:

<input class="form-check-input" type="checkbox" name="pay_wallet" value="1" id="defaultCheck2">
<label class="form-check-label small mr-3" for="defaultCheck2">
    Pay with Wallet
</label>

然后在控制器上,如果用户选中了复选框,我添加了这个来提交会话:

try {
   if ($request->pay_wallet == '1') {
      Session::put('wallet', 'payment');
      return redirect()->back();
   }
}catch (\Exception $e) {
   dd($e);
}

然后在视图中,我尝试了这个:

@php
if(session('wallet')){
    $us_id = Auth()->user()->usr_id;
    $user_wallet = App\UserWallet::where('user_id', $us_id)->get();
    foreach($user_wallet as $uw){
        echo "
        <ul>
            <li>$uw->id</li>
            <li>$uw->balance</li>
        </ul>
        ";
    }
}
@endphp

基本上我需要在这里做的是检查,如果会话wallet已提交,根据他的用户 ID 显示所有可用的钱包。

但现在的问题是,当我刷新页面时,它仍然显示钱包。这意味着会话wallet仍然存在!

我怎么解决这个问题?

4

1 回答 1

0

首先,当我们设置 Session 时,它会保持值直到 session 被销毁或者你使用 Session::forget('wallet')。但是您只需要在加载页面后才能使用它。

为此,您可以使用会话可用的 Laravel Flash 消息。用这个替换你的代码:

try {
   if ($request->pay_wallet == '1') {
      return redirect()->back()->with(['wallet'=>'payment']);
   }
}catch (\Exception $e) {
   dd($e);
}

之后,当你像这样设置钱包标志时。它仅在您第一次设置时可用,然后它将被自动删除:)

于 2021-07-26T10:15:13.737 回答