нужна помощь в обновлении уникального правила в моих правилах проверки. У меня есть абстрактный валидатор, который будет проверять правила перед хранением в моей базе данных, а в массиве правил я устанавливаю, что электронное письмо является уникальным при создании или регистрации пользователя, но при обновлении пользователя электронное письмо не должно проверять, принадлежит ли электронное письмо Пользователь.Laravel 4 Уникальные правила валидации не работают
абстрактный класс Validator
abstract class Validator {
protected $errors;
protected $attributes;
public function __construct($attributes = null)
{
$this->attributes = $attributes ?: \Input::all();
}
public function passes()
{
$validation = \Validator::make($this->attributes, $this->rules());
if ($validation->passes()) return true;
$this->errors = $validation->messages();
return false;
}
public function getErrors()
{
return $this->errors;
}
}
Validation Rules (UserRule.php)
use MyCustomValidatorNamespaceHere....
class UserRules extends Validator
public function rules()
{
return [
'email' => 'required|email|unique:users,email,id',
...
];
}
и в моем UserController я вводил UserRule в constractor. (UserRule $ userRule). Вот код в методе обновления.
public function update($id)
{
$if ($this->userRule->passes())
{
$this->user->find($id)->update(Input::all());
return .........
}
}
Но валидация всегда терпит неудачу и отображает сообщение об ошибке, что письмо уже выполнено. Пожалуйста, помогите парням.
Я решил эту проблему [здесь на StackOverflow] (http://stackoverflow.com/a/28254548/1532168) в общем виде. Он автоматически адаптирует ваши правила, если вы сделаете обновление, и при необходимости добавьте исключения в свой ': unique'. – cgross