在同一页面laravel 5上更新用户

时间:2015-11-12 04:05:33

标签: php laravel-5 updatemodel

我是框架的新手,我有一个问题。 我进行了登录验证以访问,当我转到我的个人资料页面时,我可以查看我的数据并在同一页面上更改所有数据。 我需要获取我的ID以便能够进行更新或不需要吗? 我需要做什么? 我的方式还好吗?我只需要创建一个route :: post?

我的个人资料页面

@if(Session::has('message'))
    <div class="alert alert-danger">
    <h5>{{ Session::get('message') }}</h5>
    </div>
@endif

{!! Form::open(array('url' => 'backend/perfil', 'name' => 'updateProfile', 'role' => 'form'))!!}

<div class="row" style="margin-bottom: 20px;">
    <div class="col-md-3 col-lg-3"></div>
    <div class="col-md-2 col-lg-2">
        {!! Form::label('name', 'Utilizador', ['class' => 'label_perfil']) !!}
    </div>
    <div class="col-md-5 col-lg-5">
        {!! Form::text('name', null, ['class' => 'form-control input-md', 'placeholder' => 'Utilizador']) !!}
    </div>
</div>
<div class="row" style="margin-bottom: 20px;">
    <div class="col-md-3 col-lg-3"></div>
    <div class="col-md-2 col-lg-2">
        {!! Form::label('nascimento', 'Data de nascimento', ['class' => 'label_perfil']) !!}
    </div>
    <div class="col-md-5 col-lg-5">
        {!! Form::date('nascimento', null, ['class' => 'form-control input-md']) !!}
        {{ $errors->first('nascimento', '<span class=error>:message</span>') }}
    </div>
</div>
<div class="row" style="margin-bottom: 20px;">
    <div class="col-md-3 col-lg-3"></div>
    <div class="col-md-2 col-lg-2">
        {!! Form::label('sexo', 'Sexo', ['class' => 'label_perfil']) !!}
    </div>
    <div class="col-md-5 col-lg-5">
        {!! Form::select('sexo', ['Masculino', 'Feminino'], null, ['class' => 'form-control input-md']) !!}
    </div>
</div>
<div class="row" style="margin-bottom: 20px;">
    <div class="col-md-3 col-lg-3"></div>
    <div class="col-md-2 col-lg-2">
        {!! Form::label('email', 'Email', ['class' => 'label_perfil']) !!}
    </div>
    <div class="col-md-5 col-lg-5">
        {!! Form::text('email', null, ['class' => 'form-control input-md', 'placeholder' => 'Email']) !!}
    </div>
</div>
<div class="row" style="margin-bottom: 20px;">
    <div class="col-md-3 col-lg-3"></div>
    <div class="col-md-2 col-lg-2">
        {!! Form::label('password', 'Password', ['class' => 'label_perfil']) !!}
    </div>
    <div class="col-md-5 col-lg-5">
        {!! Form::password('password', ['class' => 'form-control input-md', 'placeholder' => 'Password']) !!}
    </div>
</div>
<div class="row" style="margin-bottom: 20px;">
    <div class="col-md-3 col-lg-3"></div>
    <div class="col-md-2 col-lg-2">
        {!! Form::label('rpassword', 'Confirmar password', ['class' => 'label_perfil']) !!}
    </div>
    <div class="col-md-5 col-lg-5">
        {!! Form::password('rpassword', ['class' => 'form-control input-md', 'placeholder' => 'Confirmar password']) !!}
    </div>
</div>                          
<div class="row" style="margin-bottom: 20px;">
    <div class="col-md-3 col-lg-3"></div>
    <div class="col-md-2 col-lg-2">
        {!! Form::label('imagem', 'Imagem', ['class' => 'label_perfil']) !!}
    </div>
    <div class="col-md-5 col-lg-5">
        {!! Form::file('imagem', ['class' => 'input-file']) !!}
    </div>
</div>   
<div class="row" style="margin-bottom: 20px; margin-top: 30px;">
    <div class="col-md-3 col-lg-3"></div>
    <div class="col-md-9 col-lg-9">
        {!! Form::submit('Enviar', ['class' => 'btn btn-primary']) !!}
    </div>
</div> 
{!! Form::close() !!}

我的控制器:

public function perfil() {
    return view('backend/perfil.index');        
}           

public function updateProfile() {

    $profileData = Input::except('_token');
    $validation = Validator::make($profileData, User::$profileData);
    if ($validation->passes()) {
        User::where('id', Input::get('id'))->update($profileData);
        return view('backend/perfil.index')->with('message', 'Updated Succesfully');
    } else {
        return view('backend/perfil.index')->with('message', $validation->messages());
    }
}

我的路线:

Route::get('backend/perfil','BackendControlador@perfil');
Route::post('backend/perfil', 'BackendControlador@updateProfile');

我的应用用户:

public static $profileData = array(
        'email' =>  'required|email',
        'name' =>  'required',
        );

1 个答案:

答案 0 :(得分:2)

以下是您想要做的详细信息。

第1步:打开表单

{!! Form::open(array('url' => 'updateProfile', 'name' => 'updateProfile', 'role' => 'form'))!!}

注意:您的表单方法操作为空。您应该查看您的来源以查看它

第2步:写一条路线

Route :: post('updateProfile','homeController @ updateProfile');

它将调用homeController' s updateProfile函数

第3步:定义控制器,验证输入并通过模型完成操作

这是您的简单/示例功能

public function updateProfile()
    {
        $profileData = Input::except('_token');
        $validation = Validator::make($profileData, User::$profileData);
        if ($validation->passes()) {
            User::where('id', Input::get('id'))->update($profileData);
            return view('profile')->with('message', 'Updated Succesfully');
        } else {
            return view('profile')->with('message', $validation->messages());
        }

    }

它的作用是获取除_token之外的所有输入并将其存储在$profileData中,然后它将在$profileData内的User内进行验证模型

这是Validator,你应该修改它

public static $profileData = array(
        'email' =>  'required|email',
        'name' =>  'required',
        );

第4步:返回结果

如果验证通过,那么它会在表格中更新其ID通过的用户,即Input::get('id'),我们将返回包含return view('profile')->with('message', 'Updated Succesfully'); 的页面 我认为您的网页名称为profile.blade.php,您应根据自己的刀片进行更改

如果验证失败,我们将返回包含错误消息的页面

return view('profile')->with('message', $validation->messages());

您应该在刀片中显示错误信息

@if(Session::has('message'))
    <div class="alert alert-danger">
    <h5>{{ Session::get('message') }}</h5>
    </div>
@endif

注意:

如果您不想刷新页面,那么您应该只进行Ajax调用以传递变量并显示/隐藏Controller返回的结果

希望这有助于你