2016-08-08 7 views
2

В последнее время я изучаю Laravel и наткнулся на проблему валидатор, которая будет решена с помощью правила валидатор required_unless from Laravel 5.2:Laravel 4.2 Проверка: required_unless

$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, и это правило проверки не выполняется струи.

Есть ли другое правило проверки, которое я мог бы использовать или каким-либо другим способом?

Если нет, как бы написать правило пользовательской проверки и где бы я его поместил?

Edit: я мог бы сделать:

$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" 
    ) 
); 

... но это лишь временное решение не элегантное окончательное решение.

+1

4,2 или 5,2, что вы используете? –

+0

Он использует L4.2 – PeterPan666

ответ

2

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

Нечто подобное

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

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

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

+0

Laravel ссылки на реализацию $ this-> data. Поскольку функция, которую вы предложили мне написать, не распространяется на Validator, я не могу ее использовать, могу ли я? Означает ли это, что нужно создать собственный класс, который расширяет значение Validator? – aljazerzen

+0

Нет, вы не можете использовать '$ this-> data' внутри закрытия, если вам нужны какие-то вещи из базового валидатора, то да, вам нужно, чтобы ваш собственный класс Validator рассмотрел ссылку doc выше, раздел« Расширение класса проверки », – PeterPan666

+0

Любое предложение, куда мне поместить этот класс? – aljazerzen