我正在尝试显示我的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
答案 0 :(得分:56)
这对我有用
@if(Session::has('success'))
<div class="alert-box success">
<h2>{{ Session::get('success') }}</h2>
</div>
@endif
答案 1 :(得分:6)
如果您使用的是 bootstrap-3 ,请尝试下面的脚本以获取警报样式
@if(Session::has('success'))
<div class="alert alert-success">
<h2>{{ Session::get('success') }}</h2>
</div>
@endif
答案 2 :(得分:4)
当您使用->with()
设置变量或消息时,它不会在会话闪存中设置变量/消息,而是创建一个在您的视图中可用的变量,因此在您的情况下只需使用{{1而不是$success
如果您想在会话闪存中设置消息,请使用此Session::get('success')
,但请记住会话闪存,数据仅适用于下一个请求。
否则,您可以使用Session::flash('key', 'value');
存储在会话中
了解更多信息read here
答案 3 :(得分: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中发生的事情是你创建了一个传递给你的create()的变量$ success,但它无法显示$ success。除非您设置变量以获取消息并将其返回,否则isset将始终失败。
方法2 - 使用return Redirect withFlashMessage
return Redirect::route('users/groups')->withFlashMessage('Group Created Successfully.');
然后在您的视图页面上
@if (Session::has('flash_message'))
{{ Session::get('flash_message') }}
@endif
方法2更清晰,在create()下不需要额外的代码。
答案 4 :(得分:3)
{{ Session::get('success') }}
这只是回应了会话变量'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。
答案 5 :(得分: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
它大部分时间都适用于我,我通常将该刀片模板集成到我的视图中,这样我就可以将成功消息从我的代码中推送到视图中。
请注意文档中说明&#34;有时您可能希望仅在下一个请求中将项目存储在会话中。您可以使用Session :: flash方法&#34;所以它是在下一页之后过期的。
希望这会有所帮助
答案 6 :(得分:0)
我刚刚意识到使用Redirect :: to(),当你使用withInput()方法时,链接一个with()函数来传递变量是行不通的。唯一的方法是使用Input :: flash()单独刷新输入,使用with()传递变量,或者使用Session :: flash('key','val')通过会话传递变量,通过session :: get('key')在视图中检索。
答案 7 :(得分:0)
此链接介绍了如何执行此操作http://vegibit.com/flash-messages-in-laravel/
刚试过laravel 5 - 对我有用。
答案 8 :(得分:0)
这应该在localhost和主机上工作,我试过了。
<?php $success = Session::get('success'); ?>
@if($success)
<div class="alert-box success">
<h2>{{ $success }}</h2>
</div>
@endif
答案 9 :(得分: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
答案 10 :(得分:-3)
我通过将config / session.php中的会话驱动程序从数组更改为文件来修复我的错误!