加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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().

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读