Laravel会话Flash消息在页面回显时出现多次

时间:2016-09-27 06:47:16

标签: javascript php laravel laravel-5.2 session-state

在我的控制器中:

 Session::flash('created', "Student created");
 return Redirect::to('student');

在我看来:

 @if(Session::has('created'))
 alert('updated');
 @endif

3 个答案:

答案 0 :(得分:0)

显示会话消息

@if(Session::has('success'))
  <div class="alert alert-success alert-dismissable alert-box">
    <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
    {{ Session::get('success') }}               
  </div>
@endif
@if(Session::has('error'))
  <div class="alert alert-danger alert-dismissable alert-box">
    <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
    {{ Session::get('error') }} 
  </div>
@endif  

从控制器调用

return redirect()->back()->with('success', 'Data added successfully');

答案 1 :(得分:0)

请避免不必要的会话使用。您可以使用Redirect::route。检查以下示例:

1)将$strChecked = false;初始化到您的学生路径控制器中,然后将$strChecked = true;设置为您的学生更新方法。

2)用return \Redirect::route('student')->with('strChecked', $strChecked);

替换回程

3)然后在您的视图中,您可以使用:

@if($strChecked)
    alert('updated');
@endif

<强>编辑:

让我用我的工作演示代码说明:

1)ROUTE:

Route::get('flash', 'FlashController@flashIndex')->name('frontend.flash');
Route::post('flash/update', 'FlashController@studentUpdate')->name('frontend.flash.update');

2)查看:

@section('content')
{{ Form::open(['route' => 'frontend.flash.update', 'class' => 'form-horizontal']) }}

{{ Form::submit('Demo', ['class' => 'btn btn-primary', 'style' => 'margin-right:15px']) }}  

{{ Form::close() }}

@endsection
@section('after-scripts-end')
    <script>
        @if(Session::has('created'))
         alert('updated');
        @endif
    </script>
@stop

3)控制器:

//Method to display action...
public function flashIndex()
{
 return view('frontend.flash');  
}

//Method to update action...
public function studentUpdate()
{
 Session::flash('created', "Student created");
 return Redirect::to('flash'); 
}

希望这能解决你的疑虑。

以上示例在我的工作正常。如果这不适合您,请描述您的代码。

答案 2 :(得分:0)

对我来说,我使用Session::get('key')而不是使用Session::pull('key'),它只弹出一次。

例如

@if(Session::has('success'))
    {{ Session::pull('success') }} 
@endif  

根据Laravel 7.x doc

pull方法将在单个语句中检索并删除会话中的项目: