Ответ 1
Вы можете использовать правило проверки confirmed.
$this->validate($request, [
'name' => 'required|min:3|max:50',
'email' => 'email',
'vat_number' => 'max:13',
'password' => 'required|confirmed|min:6',
]);
Я использовал это для того, чтобы редактировать информацию об учетной записи пользователя:
$this->validate($request, [
'password' => 'min:6',
'password_confirmation' => 'required_with:password|same:password|min:6'
]);
Это нормально работало в приложении Laravel 5.2, но не работает в приложении 5.4.
Что здесь не так или как правильно сделать, чтобы сделать password
обязательным, только если установлено поле password
или password_confirmation
?
Вы можете использовать правило проверки confirmed.
$this->validate($request, [
'name' => 'required|min:3|max:50',
'email' => 'email',
'vat_number' => 'max:13',
'password' => 'required|confirmed|min:6',
]);
Попробуйте сделать это так, у меня получилось:
$this->validate($request, [
'name' => 'required|min:3|max:50',
'email' => 'email',
'vat_number' => 'max:13',
'password' => 'min:6|required_with:password_confirmation|same:password_confirmation',
'password_confirmation' => 'min:6'
]);'
Похоже, что правило всегда имеет проверку на первом входе среди пары...
попробуйте подтвердить и без правила password_confirmation:
$this->validate($request, [
'name' => 'required|min:3|max:50',
'email' => 'email',
'vat_number' => 'max:13',
'password' => 'confirmed|min:6',
]);
Попробуйте следующее:
'password' => 'required|min:6|confirmed',
'password_confirmation' => 'required|min:6'
Этого должно быть достаточно, чтобы сделать:
$this->validate($request, [
'password' => 'nullable,min:6,confirmed',
]);
Сделать пароль необязательным, но при его наличии требуется подтверждение пароля, соответствующее