【问题标题】:Laravel How to clear session after display in specific pageLaravel如何在特定页面显示后清除会话
【发布时间】:2018-04-14 23:34:11
【问题描述】:

我可以在会话中存储输入值并在刀片中显示它,但是当我返回表单并添加新项目时,前一个项目仍在会话中并且无法显示新项目!我尝试将忘记添加到会话但没有用,我正在使用 ajax 将值传递给控制器​​

$(document).on('click', '.btn_getbids', function() {
$.ajax({
    type: 'post',
    url: 'addItem',
    data: {
        '_token': $('input[country=_token]').val(),
        'country': $('input[name=country]').val() },
    success: function(data) {
   }, });
   $('#country').val('');});

控制器

  public function addItem(Request $request) {

   $request->session()->put('country', $request->country);

    }

customer.blade

    <div class="alert alert-success">
         {{Session::get('country')}} 
    </div>

【问题讨论】:

    标签: php laravel session


    【解决方案1】:

    如果我得到你的正确,

    session->flush();
    

    将清除所有会话数据,而不是使用

    session->forget('key');
    

    使用 key 参数,您可以指定要清除的数据...

    【讨论】:

    • 但我想保留用户登录数据!!!我试过 $request->session()->flush('country');还把我踢出登录,必须重新登录!!!
    • 请参阅下面的链接以获取更多信息。 laracasts.com/discuss/channels/laravel/…
    【解决方案2】:

    您应该尝试在控制器中添加以下代码:

    if($request->session()->has('country') && $request->session()->get('country') != '') {
      $request->session()->forget('country');
    } else {
      $request->session()->put('country', $request->country);
    }
    

    【讨论】:

      【解决方案3】:

      尝试使用flash方法

      $request->session()->flash('country', $request->country);
      

      【讨论】:

      • 它的 flush() 方法不是 flash()。
      • 谢谢你的回答是wotking,但我知道后只能使用会话变量
      • 对短消息很有用。
      猜你喜欢
      • 2017-01-14
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多