Session Laravel 4如何在视图中显示flash消息?

Session Laravel 4如何在视图中显示flash消息?,session,laravel,laravel-4,Session,Laravel,Laravel 4,我正在尝试显示我的flash消息 这在我的路由文件中 Route::post('users/groups/save', function(){ return Redirect::to('users/groups')->withInput()->with('success', 'Group Created Successfully.'); }); 这是我的看法 {{ $success = Session::get('success') }} @if($success) &

我正在尝试显示我的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=Session::get('success')}
@如果($成功)
{{$success}
@恩迪夫
但一切都不起作用

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

{{ Session::get('success') }}
@if($success)
    <div class="alert-box success">
        <h2>{{ $success }}</h2>
    </div>
@endif
{{Session::get('success')}
@如果($成功)
{{$success}
@恩迪夫
这对我很有用

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

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

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

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

更多信息

这只是响应会话变量“success”。所以当你使用

{{Session::get('success')}
@如果($成功)
{{$success}
@endif

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

正如@Andreyco所说

@if(Session::has('success'))
<div class="alert-box success">
    <h2>{{ Session::get('success') }}</h2>
</div>
@endif
@if(Session::has('success'))
{{Session::get('success')}
@恩迪夫
这应该行得通


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

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

我将config/session.php中的会话驱动程序从数组更改为文件,从而修复了我的问题

两种方法:

方法1-如果您正在使用

return Redirect::to('users/groups')->withInput()->with('success', 'Group Created Successfully.');
在控制器create()下,加载项

然后在查看页面上

@if (isset($success))
{{$success }}
@endif
@if (Session::has('flash_message'))
{{ Session::get('flash_message') }}
@endif
方法1中的情况是,您正在创建一个变量$success,该变量被传递到create()中,但它无法显示$success。除非设置变量以获取消息并返回消息,否则isset将始终失败

方法2-使用带有FlashMessage的返回重定向

return Redirect::route('users/groups')->withFlashMessage('Group Created Successfully.');
然后在您的查看页面上

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

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

此链接介绍了如何执行此操作


刚刚试用过laravel 5-对我有效。

这应该在本地主机和主机上都有效,我试过了

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

@如果($成功)
{{$success}
@恩迪夫

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

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

在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
@if(Session::has('success'))
{{Session::get('success')}
@恩迪夫
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方法来存储项目”。因此,是的,它将在下一页后过期


希望这有助于

当您使用
->with()时
它不会在flash中设置会话,而是创建一个变量,因此在您的情况下,只需使用$session而不是session::get()我得到$session undefined:(抱歉,键入了它的$success是我的想法,但我也得到了未定义的变量:success您必须执行@if(isset($success)),因为您使用success变量调用同一个视图一次,没有使用itI调用一次。我实际上已经尝试过了,但仍然没有任何结果。我的xampp安装可能有问题吗?我需要编辑我的php ini文件中的任何内容吗?不,您不需要更新php.ini文件。这应该是现成的。我清楚地看到,您没有这样做荣毅仁。再看一次,也许这有助于@MorneZeelie你能澄清一下“根本不工作”吗?你收到错误消息(请发布)还是奇怪的结果(解释你看到了什么).Andreayco的答案非常完美。@Alex-Info.net我的意思是它是空白的。没有任何东西显示错误。你的部分答案是错误的。如果你使用
Redirect::to()
with
with()
,那么它将被分配给会话。你能告诉我withFlashMessage的API吗?