【问题标题】:Laravel 5 validation rule required_with:password_confirmationLaravel 5 验证规则 required_with:password_confirmation
【发布时间】:2016-04-30 02:38:54
【问题描述】:

我在编辑表单中遇到验证规则问题。我的表单字段是nameemailpasswordpassword_confirmation。我的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.');
}

这是一个表格:

{!! Form::model($user, [
		'method' => $user->exists ? 'put' : 'post',
		'route' => $user->exists ? ['backend.users.update', $user->id] : ['backend.users.store']
	]) !!}

	<div class="form-group">
		{!! Form::label('name') !!}
		{!! Form::text('name', null, ['class' => 'form-control']) !!}
	</div>

	<div class="form-group">
		{!! Form::label('email') !!}
		{!! Form::email('email', null, ['class' => 'form-control']) !!}
	</div>

	<div class="form-group">
		{!! Form::label('password') !!}
		{!! Form::password('password', ['class' => 'form-control']) !!}
	</div>

	<div class="form-group">
		{!! Form::label('password_confirmation') !!}
		{!! Form::password('password_confirmation', ['class' => 'form-control']) !!}
	</div>

{!! Form::submit($user->exists ? 'Save User' : 'Create New User', ['class' => 'btn btn-primary btn-sm']) !!}

密码验证规则required_with:password_confirmation 应该允许用户留下空白字段passwordpassword_confirmation 如果他不想更改它,但这不起作用。当我将该字段留空时,空值将被散列并存储在数据库中。所有其他验证都可以正常工作,但当用户在passwordpassword_confirmation 中留下空值时就不行了。为什么这不起作用?我做错了什么?

【问题讨论】:

    标签: php validation laravel-5.2


    【解决方案1】:

    您需要在不使用填充等的情况下单独更新数据库,因为它总是将密码值设为空或不为空,然后添加它,所以请尝试:

       $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 是否也需要更新等。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-18
      • 1970-01-01
      • 2015-01-26
      • 1970-01-01
      • 2016-12-17
      • 2020-06-25
      相关资源
      最近更新 更多