【问题标题】:Laracasts session->flash(); does not work Laravel Framework 5.6.3Laracasts session->flash();不工作 Laravel 框架 5.6.3
【发布时间】:2018-08-29 05:04:30
【问题描述】:

我正在尝试将错误消息从我的控制器闪回到我的视图中。我试过这个:

\Route::group(['middleware' => 'web'], function ()       
    flash('Error message'); 
    return Redirect::back();
});

并尝试通过以下方式展示我的观点:

@include('flash::message')

但是,这似乎并没有显示消息。 我已经在网上浏览了 2 到 3 个小时,现在我很茫然。

如果这是 stackoverflow 上某个问题的重复,那么抱歉!

【问题讨论】:

  • 有文档可用时无需搜索 2-3 小时:laravel.com/docs/5.6/session#flash-data
  • @kerbholz 文档是其中的一部分,Laravel 文档有时会让我感到困惑。所以我尝试使用 Laracasts/flash,但他们的文档更加模糊。
  • 感谢 kerbholz、luxshan 和 Rahul tathod 回答了我的问题。您的所有解决方案都非常有帮助,而且都奏效了!

标签: php laravel laravel-5.6


【解决方案1】:

在控制器中

 use Session;

\Session::flash('msg', 'Error' );

在刀片中

{!!Session::get('msg')!!}

【讨论】:

  • 这似乎可行,但现在我很好奇为什么 laracasts/flash 不能这样工作?
  • 我还没有尝试过那个插件..你是否正确地遵循了他们的文档??而且我认为您不需要为此 Flash 消息使用外部插件。我认为您需要将 Laracasts\Flash\FlashServiceProvider::class, 放入 'alias'=>[] 并使用方法
  • 我确实将 Laracasts\Flash\FlashServiceProvider::class 放在了“别名”中。该插件不起作用。但是 laravel 所拥有的股票 session::flash 现在可以使用,我想如何使用它很难。不过谢谢!
  • 今天我遇到了这个答案,也许它会帮助你stackoverflow.com/a/27405933/9085381
  • 我在尝试在 stackoverflow 上获得答案之前使用了该软件包,它有点破坏了我的会话,因此堆栈上出现了这个问题,但无论如何谢谢!
【解决方案2】:

在 Laravel 中使用 session flash:

web.php

Route::get('/',
    function () {
        Session::flash('error', 'test');
        return view('welcome');
    });

在您的.blade 查看文件中,您可以使用

@if (session('error'))
<div class="alert alert-warning">{{ session('error') }}</div>
@endif

您可以将'error' 替换为您想要闪烁的任何类型的消息(“成功”、“警告”、“yourOwnMessageIdentifier 等)。

【讨论】:

  • 您能否进一步说明您的解决方案?我真的不明白。如何替换“测试”和“错误”/消息标识符?我使用了 \Route::group(['middleware' => 'web'], function () { // do stuff});在我的控制器中,因为互联网上的其他一些类似问题表明中间件分组有问题
  • 'error' in Session::flash('error', 'test'); 和 {{ session('error') }} 只是我用来识别我要输出的闪存类型的标识符。你也可以Session::flash('success', 'Action was successful'); 然后{{ session('success') }} 在你的.blade。这有帮助吗?
  • 是的,但是,它必须在 web.php 中?因为我的错误来自我用来发送邮件和处理我的验证码验证的“MailController”。当它成功或失败时,它应该重定向回请求来自的页面,然后在请求成功或验证失败时提醒用户。
  • 不,Session::flash() 也可以在您的控制器操作中使用
  • 是的,它有效!谢谢!我一直在思考这个问题。
【解决方案3】:
use simply
\Session::flash('msg', 'Changes Saved.' );

@if(Session::has('msg'))
        <div class="alert alert-info">
            <a class="close" data-dismiss="alert">×</a>
            <strong>Heads Up!</strong> {!!Session::get('msg')!!}
        </div>
    @endif

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-29
    • 2017-10-14
    • 2016-07-15
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 2017-02-17
    • 2016-06-14
    相关资源
    最近更新 更多