【问题标题】:Session still submitted after redirecting view重定向视图后会话仍然提交
【发布时间】:2021-10-02 04:52:44
【问题描述】:

我正在使用 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 仍然存在!

我该如何解决这个问题?

【问题讨论】:

  • 这就是会话的工作方式。完成计算/显示钱包余额后,您是否尝试过取消设置/清除钱包会话?另外,为什么不在控制器中获取用户的钱包信息并将其传递给视图?
  • @brombeer 我刚刚尝试在foreach 之后添加Session::forget('wallet');,但重定向后仍然显示&lt;li&gt;s
  • 请注意,我们更喜欢这里的技术写作风格。我们轻轻地劝阻问候,希望你能帮助,谢谢,提前感谢,感谢信,问候,亲切的问候,签名,请你能帮助,聊天材料和缩写 txtspk,恳求,你多久了被卡住、投票建议、元评论等。只需解释您的问题,并展示您尝试过的内容、预期的内容以及实际发生的情况。

标签: php laravel laravel-5.8 laravel-session


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    • 2014-03-18
    • 2017-11-13
    • 1970-01-01
    相关资源
    最近更新 更多