Laravel 5.1: пользовательский класс проверки

Я сделал этот пользовательский класс проверки, CustomValidator.php:

<?php

namespace App;

use Illuminate\Validation\Validator;

class CustomValidator extends Validator{

public function validateRequiredWithOneOf($attribute, $value, $parameters)
{
$data = $this->getData();
foreach ($parameters as $p) {
if ( array_get($data,$p) != null) {return true;}
}

return false;
}

public function replaceRequiredWithOneOf($message, $attribute, $rule, $parameters)
{
return $this->replaceRequiredWith($message, $attribute, $rule, $parameters);
}
}

который я называю в моем CustomRequest.php

'input_field' => 'required_with_one_of:first,second,third',

Если атрибут input_field затем выбирается хотя бы одно из полей параметров (first,second,third) должен быть выбран также.

Если я определю пользовательскую проверку внутри boot() метод AppServiceProvider.php все работает, но только если я создаю этот класс CustomValidator и удаляю код из AppServiceProvider.php,

Это меня не удивляет, так как я звоню Validator и не CustomValidator в моем CustomRequest учебный класс.

мой CustomRequest класс расширяется Request класс, который расширяется FormRequest класс, в котором Validator упоминается во многих местах. Я действительно не знаю, с чего начать.
При необходимости я могу с / п FormRequest класс здесь.

Кто-нибудь может помочь мне разобраться с этим?

0

Решение

После создания CustomValidator просто позвони resolver метод в boot() метод:

\Validator::resolver(function($translator, $data, $rules, $messages)
{
return new CustomValidator($translator, $data, $rules, $messages);
});

Кроме того, называя это внутри CustomRequest не делает различий. Должно работать без проблем.

2

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

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

По вопросам рекламы [email protected]