【问题标题】:Laravel 5 flash message keep appearingLaravel 5 flash 消息不断出现
【发布时间】:2016-02-28 11:21:48
【问题描述】:

在用户成功(或失败)创建文章后,我使用 Flash 来获取用户反馈。我正在使用 PHP 版本 5.5.27。这是我在控制器中的存储功能:

public function store(ArticleRequest $request)
{

    $data = $request->all();

    Article::create($data);

    Flash::message('Article Created!');

    return redirect ('articles');

}

这是我认为的 app.blade.php :

<div class="container">

@include('flash::message')

@yield('content')

无论我在哪里导航,都会不断出现 Flash 消息。但是如果我从我的应用程序中注销用户,闪光灯就消失了。我已经尝试使用原始的 Session::message 并且它仍然是一样的。我也尝试了Laravel 5 flash message flashes again after navigating away and using back button 的所有解决方案,但仍然没有解决我的问题。 但是当我尝试创建一个新的 laravel 项目时,它确实工作得很好。我在这个问题之前遇到了 TokenMismatchException,并通过编辑如下的 VerifyCsrfToken.php 文件来修复它:

public function handle($request, Closure $next)
{
    //return parent::handle($request, $next);

    $response = $next($request);

    if (last(explode('\\',get_class($response))) != 'RedirectResponse') {
        $response->header('P3P', 'CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
    }

    return $response;

}

这个问题是否与VerifyCsrfToken.php 文件有关?我该如何解决?任何帮助将不胜感激

【问题讨论】:

标签: php laravel-5


【解决方案1】:

我更喜欢用这种方式:

在控制器中:

\Session::flash('key', 'value');

在视图中:

@if(\Session::has('key')
 // Include blade file or :
 {{ \Session::get('key') }}
@endif

在 laravel 文档中:

有时您可能希望将项目存储在会话中仅用于下一个请求。您可以使用 flash 方法执行此操作。使用此方法存储在会话中的数据将仅在后续 HTTP 请求期间可用,然后将被删除。 Flash 数据主要用于短暂的状态消息:

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

或者

\Request::session()->flash()

试试这个方法。

【讨论】:

  • 我已经尝试过了,但是在我从当前用户注销并再次登录之前,该消息仍然会一直出现
  • 您是否尝试使用此命令:php artisan clear-compiled ?还使用清除旧缓存: php artisan cache:clear
  • 我已经试过 php artisan clear-compiled 还是一样
  • 是的,我也尝试了您上面提到的内容,但在重新加载或转到其他页面后仍然会出现。但是当我用一个全新的 laravel 项目尝试 flash 消息时,当我重新加载或转到其他页面时 flash msg 消失了。
猜你喜欢
  • 1970-01-01
  • 2017-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多