23

我正在尝试显示我的 Flash 消息。

这是在我的路由文件中

Route::post('users/groups/save', function(){

return Redirect::to('users/groups')->withInput()->with('success', 'Group Created Successfully.');

});

这在我看来

{{ $success = Session::get('success') }}
@if($success)
    <div class="alert-box success">
        <h2>{{ $success }}</h2>
    </div>
@endif

但没有任何工作。

当我尝试这个时,我得到一个错误变量 $success 未定义。但它实际上也显示了 Flash 消息。

{{ Session::get('success') }}
@if($success)
    <div class="alert-box success">
        <h2>{{ $success }}</h2>
    </div>
@endif
4

11 回答 11

56

这对我有用

@if(Session::has('success'))
    <div class="alert-box success">
        <h2>{{ Session::get('success') }}</h2>
    </div>
@endif
于 2013-07-08T12:56:54.067 回答
6

如果您使用的是bootstrap-3 ,请尝试以下脚本以获取警报样式

    @if(Session::has('success'))
        <div class="alert alert-success">
            <h2>{{ Session::get('success') }}</h2>
        </div>
    @endif
于 2015-07-14T18:23:40.177 回答
4

两种方法:

方法 1 - 如果您正在使用

return Redirect::to('users/groups')->withInput()->with('success', 'Group Created Successfully.');

在您的控制器 create() 下,添加

$success = Session::get('success');
return View::make('viewfile')->with('success', $success);

然后在查看页面上,

@if (isset($success))
{{$success }}
@endif

方法 1 中发生的情况是您正在创建一个变量 $success,该变量已传递到您的 create() 中,但它无法显示 $success。除非您设置一个变量来获取消息并返回它,否则 isset 将始终失败。

方法 2 - 使用返回重定向 withFlashMessage

return Redirect::route('users/groups')->withFlashMessage('Group Created Successfully.');

然后在您的查看页面上,

@if (Session::has('flash_message'))
{{ Session::get('flash_message') }}
@endif

方法 2 更简洁,不需要 create() 下的额外代码。

于 2015-02-09T11:48:36.667 回答
4

当您使用->with()它设置变量或消息时,不会在会话闪存中设置变量/消息,而是创建一个在您的视图中可用的变量,因此在您的情况下,只需使用$success而不是Session::get('success')

如果您想在会话闪存中设置消息,请使用它Session::flash('key', 'value');,但请记住会话闪存数据仅可用于下一个请求。

否则,您可以使用Session::put('key', 'value');在会话中存储

有关更多信息,请阅读此处

于 2013-07-08T13:11:25.960 回答
3
{{ Session::get('success') }}

这只是呼应会话变量“成功”。所以当你使用

{{ Session::get('success') }} @if($success) <div class="alert-box success"> <h2>{{ $success }}</h2> </div> @endif

您会看到它的输出以及下一条语句的错误。因为 with() 函数只设置 Session 中的值,不会设置为变量。因此@if($success)将导致未定义的变量错误。

正如@Andreyco 所说,

@if(Session::has('success'))
<div class="alert-box success">
    <h2>{{ Session::get('success') }}</h2>
</div>
@endif

这应该有效。

您没有看到它的原因可能是因为您正在执行的操作不成功。这不需要您重新安装 xampp 或修改 php.ini。

于 2014-08-08T14:41:42.367 回答
2

Laravel 4.2 我个人使用

Session::flash('key', 'value');
return Redirect::to('some/url');

然后在视图ID中首先检查视图中是否存在该键的会话

@if(Session::has('key'))
   {{Session::get('key')}} //this prints out the message or your 'value' in the session::flash method
@endif

它大部分时间都适用于我,我通常将刀片模板集成到我的视图中,这样我就可以将成功消息从我的代码推送到视图中。

请注意,文档中声明“有时您可能希望仅在下一个请求的会话中存储项目。您可以使用 Session::flash 方法这样做”所以是的,它在下一页后过期。

希望这可以帮助

于 2016-02-17T02:57:59.697 回答
0

此链接描述了如何执行此操作http://vegibit.com/flash-messages-in-laravel/

刚刚尝试使用 laravel 5 - 对我有用。

于 2015-04-07T12:48:17.163 回答
0

我刚刚意识到在使用 Redirect::to() 时,当您使用 withInput() 方法时,链接 with() 函数来传递变量将不起作用。唯一的方法是使用 Input::flash() 单独刷新输入,并使用 with() 传递变量,或者使用 Session::flash('key','val') 通过会话传递变量和通过 session::get('key') 在视图中检索。

于 2014-10-24T09:44:40.327 回答
0

这应该在本地主机和主机上工作,我试过了。

<?php $success = Session::get('success'); ?>
@if($success)
    <div class="alert-box success">
        <h2>{{ $success }}</h2>
    </div>
@endif
于 2015-06-15T14:11:28.983 回答
0

在 routes.php 文件中,尝试在

Route::group(['middleware' => ['web']], function () {
    //routes here
}

然后使用

@if(Session::has('success'))
   <div class="alert-box success">
     <h2>{{ Session::get('success') }}</h2>
   </div>
@endif
于 2016-01-07T17:04:16.843 回答
-3

我通过将 config/session.php 中的会话驱动程序从数组更改为文件来修复我的问题 !

于 2014-11-16T23:43:20.267 回答