【发布时间】:2018-08-09 23:50:52
【问题描述】:
我正在使用 L5 存储库,它有验证器包 (https://github.com/andersao/laravel-validator),但我在更新它时验证唯一字段时遇到问题,谁能帮助我???
******下面的示例我在 RULE_UPDATE 上尝试过这种方式但没有成功..
((((((我要验证的字段:people_id,电子邮件,因为这些仅对其余用户是唯一的,而不是对当前正在更新的当前用户是唯一的))))))))
在 UserService.php 中调用验证:
使用 Prettus\Validator\Contracts\ValidatorInterface;
public __construct(){
$this->validator = \App::make('App\Validators\UserValidator');
}
save($data){
if(!empty($data['id'])){
$this->validator->with($data)->passesOrFail(ValidatorInterface::RULE_UPDATE);
}else{
$this->validator->with($data)->passesOrFail(ValidatorInterface::RULE_CREATE);
}
}
命名空间 App\Validators;
使用\Prettus\Validator\Contracts\ValidatorInterface; 使用 \Prettus\Validator\LaravelValidator;
类 UserValidator 扩展了 LaravelValidator {
protected $rules = [
ValidatorInterface::RULE_CREATE => [
'people_id' => 'required|unique:users',
'active' => 'required',
'available_chat' => 'required',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
'masters_id' => 'required',
],
ValidatorInterface::RULE_UPDATE => [
'id' => 'required',
'people_id' => 'required|unique:users,id,:id',
'active' => 'required',
'available_chat' => 'required',
'email' => 'required|string|email|max:255|unique:users,id,:id',
//'password' => 'required|string|min:6|confirmed',
//'masters_id' => 'required',
],
];
protected $messages = [
'id.required' => 'Usuário não encontrado!',
'people_id.required' => 'Pessoa é obrigatório',
'people_id.unique' => 'Pessoa já cadastrada',
'active.required' => 'Obrigatório',
'available_chat.required' => 'Obrigatório',
'email.required' => 'Digite o e-mail',
'password.required' => 'Digite a senha',
'password.min' => 'Digite uma senha com 6 caracteres',
'password.confirmed' => 'Confirme a senha corretamente',
'email.unique' => 'E-mail já cadastrado',
];
}
【问题讨论】:
标签: laravel validation field