php – Laravel Session Flash持续存在2个请求
发布时间:2020-12-14 19:55:27 所属栏目:大数据 来源:网络整理
导读:最近我已经从Codeigniter改为Laravel,除了遇到了Session :: flash的问题,一切顺利. 当我创建新用户时,我会获得成功消息,但是会持续2个请求,即使我没有通过验证器: 我的代码在UsersController中: function getCreateUser(){ $config = array( 'pageName' =
最近我已经从Codeigniter改为Laravel,除了遇到了Session :: flash的问题,一切顺利.
当我创建新用户时,我会获得成功消息,但是会持续2个请求,即使我没有通过验证器: 我的代码在UsersController中: function getCreateUser(){ $config = array( 'pageName' => 'createUser','pageTitle' => 'Create User','formUrl' => action('UsersController@postCreateUser'),'modelFields' => array( array('db_name' => 'employee_id','text' => 'Employee Id','mandatory' => TRUE),array('db_name' => 'full_name','text' => 'Full Name',array('db_name' => 'email','text' => 'Email','mandatory' => FALSE),array('db_name' => 'password','text' => 'Password','value' => '12345','mandatory' => TRUE) ),'submit_text' => 'Create' ); return View::make('layouts.form',$config); } function postCreateUser(){ $config = array( 'pageName' => 'createUser','submit_text' => 'Create' ); $validator = User::validate(Input::all()); if($validator->passes()){ $user = new User(Input::all()); $user->password = Hash::make(Input::get('password')); $user->Company_id = '1'; $user->save(); Session::flash('message','User Created Successfully!'); Session::flash('alert-class','alert-success'); return View::make('layouts.form',$config); } return View::make('layouts.form',$config)->withErrors($validator->messages()); } 在form.blade中: @if ( $errors->count() > 0 ) <div class="alert alert-danger"> <p>The following errors have occurred:</p> <ul> @foreach( $errors->all() as $message ) <li>{{ $message }}</li> @endforeach </ul> </div> @endif 在master.blade: @if(Session::has('message')) <p class="alert {{ Session::get('alert-class','alert-info') }} alert-dismissable"> {{ Session::get('message') }}</p> @endif 也许我不是孤独的这个问题,here是另一个未回答的问题. 更新 对于将来面临这个问题的人来说: 我的代码现在看起来像这样: function postCreateUser(){ $validator = User::validate(Input::all()); if($validator->passes()){ $user = new User(Input::all()); $user->password = Hash::make(Input::get('password')); $user->Company_id = '1'; $user->save(); Session::flash('message','alert-success'); } else { Session::flash('message',Helpers::formatErrors($validator->messages()->all())); Session::flash('alert-class','alert-danger'); } return Redirect::action('UsersController@getCreateUser'); }
您正在闪烁会话数据并创建视图,而不是重定向,这意味着消息将为此请求的闪存和下一个显示两次.
如果要在不重定向的情况下显示当前请求的消息,我建议您向View :: make提供错误,而不是尝试Flash消息.如果您必须在当前请求上刷新消息,那么在您的视图之后,您将需要Session :: forget(‘key’)或Session :: flush(). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |