Недавно я изучал Laravel и столкнулся с проблемой валидатора, которая может быть решена с помощью правила валидатора. required_unless
из Laravel 5.2:
$validator = Validator::make(
array(
'social_id' => $social_id,
'login_by' => $login_by
), array(
'social_id' => 'required_unless:login_by,manual',
'login_by' => "in:manual,google,facebook, stack_exchange, myspace")
);
Проблема в том, что я использую Laravel 4.2 и это правило валидации не реализовано.
Есть ли какое-либо другое проверяющее правило, которое я мог бы использовать или каким-либо другим способом?
Если нет, то как бы я написал собственное правило проверки и куда я его поместил?
Изменить: я мог бы сделать:
$validator = Validator::make(
array(
'social_id' => $social_id,
'login_by' => $login_by
), array(
'social_id' => 'required_if:login_by,google,facebook, stack_exchange, myspace',
'login_by' => "in:manual,google,facebook, stack_exchange, myspace")
);
…но это всего лишь обходной путь, а не элегантное постоянное решение.
Вы можете просто расширить валидатор с помощью extend
метод.
Что-то вроде этого
Validator::extend('required_unless', function ($attribute, $value, $parameters) {
// Implement your version of required_unless here
});
И даже украсть немного логики из L5.2 Вот
Вы можете увидеть документ по расширению Вот
Других решений пока нет …