会话flash消息执行两次Laravel

时间:2017-11-09 14:58:45

标签: php laravel session laravel-5

我的会话Flash消息出现问题

我有一个像这样的简单逻辑

if(empty($code))
        {
            return redirect()->back()->with('modal', 'working');
        }

在我的视图文件中,我正在测试

@if(session('modal'))
  <script>
    alert('working');
  </script>
@endif

问题是alert('working');执行了两次。因此,当它重定向时,一次立即执行,第二次,它在加载文档后执行。

我尝试了各种解决方法,例如删除会话密钥,加载文档准备好javascript,但没有任何作用。

可能是什么问题?

2 个答案:

答案 0 :(得分:1)

假设你正在使用bootstrap ...

以下是我的方法:

在你的视图中创建一个名为:alerts的新文件夹,并在其中创建一个名为alerts.blade.php的文件

粘贴:

@if (Session::has('success'))
    <div class="alert alert-success alert-dismissable">
        <button type="button" class="close" data-dismiss="alert" aria-label="Close">
            <span aria-hidden="true">&times;</span>
        </button>
        {{ Session::get('success') }}
    </div>
@elseif (Session::has('error'))
    <div class="alert alert-danger">
        <button type="button" class="close" data-dismiss="alert" aria-label="Close">
            <span aria-hidden="true">&times;</span>
        </button>
        {{ Session::get('error') }}
    </div>
@elseif(Session::has('warning'))
    <div class="alert alert-warning">
        <button type="button" class="close" data-dismiss="alert" aria-label="Close">
            <span aria-hidden="true">&times;</span>
        </button>
        {{ Session::get('warning') }}
    </div>
@endif

在您拥有的每个文件中,您现在可以使用:include('alerts.alerts')

现在在您的控制器中,如果您希望标记错误/警告或成功消息,只需使用:

Session::flash('success', 'Success message here')

return redirect()->back();


Session::flash('error', 'Error message here')

return redirect()->back();


Session::flash('warning', 'warning message here')

return redirect()->back();

通过这种方式,您无需继续将HTML添加到包含任何类型消息的每个页面,因为您只需包含一个在调用时将标记的文件。

最初的化妆似乎有点长,我知道,但最终它会为你节省很多时间

答案 1 :(得分:0)

您应该像这样使用laravel flash帮助器,

@Override protected void onPostExecute(Void unused) { iv1.setImageDrawable(ddd); }

$request->session()->flash('status', 'Task was successful!');