Php 需要Laravel 5验证规则,带有密码确认

Php 需要Laravel 5验证规则,带有密码确认,php,validation,laravel-5.2,Php,Validation,Laravel 5.2,我对编辑表单中的验证规则有问题。我的表单字段有姓名,电子邮件,密码和密码确认。MyUpdateUserRequest类返回以下规则: return [ 'name' => ['required', 'max:50', 'min:3'], 'email' => ['required', 'email', 'unique:users,email,' .$this->route('users')], 'passw

我对编辑表单中的验证规则有问题。我的表单字段有
姓名
电子邮件
密码
密码确认
。My
UpdateUserRequest
类返回以下规则:

return [
            'name' => ['required', 'max:50', 'min:3'],
            'email' => ['required', 'email', 'unique:users,email,' .$this->route('users')],
            'password' => ['required_with:password_confirmation', 'confirmed']
        ];
UsersController
中的更新方法是:

public function update(Requests\UpdateUserRequest $request, $id)
{
    $user = $this->users->findOrFail($id);
    $user->fill($request->only('name', 'email', 'password'))->save();
    return redirect(route('backend.users.edit', $user->id))->with('status', 'User has been updated.');
}
这是一种形式:

{!!表单::模型($user[
'method'=>$user->exists?'put':'post',
'route'=>$user->存在?['backend.users.update',$user->id]:['backend.users.store']
]) !!}
{!!Form::label('name')!!}
{!!Form::text('name',null,['class'=>'Form control'])
{!!Form::label('email')!!}
{!!Form::email('email',null,['class'=>'Form control'])
{!!Form::label('password')!!}
{!!Form::password('password',['class'=>'Form control'])
{!!Form::label('password_confirmation')!!}
{!!Form::password('password_confirmation',['class'=>'Form control'])

{!!Form::submit($user->exists?'Save user':'Create New user',['class'=>'btn btn primary btn sm'])!!
您需要单独更新数据库,而不使用fill等,因为它总是会得到密码值是否为空,然后添加它,所以请尝试:

   $user = $this->users->findOrFail($id);
   $user->name = $request->get('name');
   $user->email = $request->get('emil');
   if(!empty($request->get('password')) {
        $user->password = $request->get('password');
   }
   $user->save();
诸如此类的东西,所以你正在检查PW是否也需要更新等等


基本上,您需要验证是否需要输入,您的方法会获取所有请求的值,并且无论它们是空的还是注释都会更新。

您需要在不使用fill等的情况下单独更新db,因为它总是会将密码值设为空或非空,然后添加它,因此请尝试:

   $user = $this->users->findOrFail($id);
   $user->name = $request->get('name');
   $user->email = $request->get('emil');
   if(!empty($request->get('password')) {
        $user->password = $request->get('password');
   }
   $user->save();
诸如此类的东西,所以你正在检查PW是否也需要更新等等

基本上,您需要验证是否需要输入,您的方法接受所有请求的值,并且无论它们是空的还是注释,都将更新