重定向视图后仍提交会话

rsaldnfx  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(271)

我正在使用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 他还活着!
那么你对这个问题的解决方案是什么呢?
我真的很感激你们关于这个的任何想法或建议。。。
提前谢谢。

v64noz0r

v64noz0r1#

首先,当我们设置session时,它将保持值,直到session被销毁或者您使用session::forget(“wallet”)为止。但您只需要在加载页面时才可以使用它。
为此,您可以使用会话提供的laravel flash消息。将代码替换为以下内容:

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

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

相关问题