Проверка Laravel 4.2: required_unless

Недавно я изучал 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")
);

…но это всего лишь обходной путь, а не элегантное постоянное решение.

2

Решение

Вы можете просто расширить валидатор с помощью extend метод.

Что-то вроде этого

Validator::extend('required_unless', function ($attribute, $value, $parameters) {
// Implement your version of required_unless here
});

И даже украсть немного логики из L5.2 Вот

Вы можете увидеть документ по расширению Вот

2

Другие решения

Других решений пока нет …