Пользовательский валидатор на основе других ограниченийPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Пользовательский валидатор на основе других ограничений

Сообщение Anonymous »

Как написать собственный валидатор?
Например, у меня есть рабочий код.

use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\ConstraintViolationInterface;
use Symfony\Component\Validator\Validation;

$input = [
null, //fail
0, //fail
1, //fail
2, //fail
"12", //ok - string can be (at least 2 chars)
20, //ok
50 //ok
];

$constraint = new Assert\All([
// the keys correspond to the keys in the input array
new Assert\NotBlank(),
new Assert\AtLeastOneOf([
new Assert\Sequentially([
new Assert\Type(['type' => 'int']),
new Assert\GreaterThanOrEqual(20)
]),
new Assert\Sequentially([
new Assert\Type(['type' => 'string']),
new Assert\Length(2)
])
])
]);

$validator = Validation::createValidator();

$violations = $validator->validate($input, $constraint);

Я хотел бы объединить «проверки» в один класс.

$input = [
null, //fail
0, //fail
1, //fail
2, //fail
"12", //ok - string can be (at least 2 chars)
20, //ok
50 //ok
];

$constraint = new Assert\All(
new IdConstraint()
);

$validator = Validation::createValidator();

$violations = $validator->validate($input, $constraint);


Как должен выглядеть класс IdContrains или IdValidator? Вот что у меня пока получилось.
namespace App\Constraint;

use Symfony\Component\Validator\Constraint;

class IdConstraint extends Constraint
{
public $message = 'The input "{{ string }}" contains invalid values.';
}

namespace App\Constraint;

use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;

class IdValidator extends ConstraintValidator
{
public function validate($value, Constraint $constraint)
{
//what to put here???
}
}


Подробнее здесь: https://stackoverflow.com/questions/625 ... onstraints
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»