Пользовательский валидатор на основе других ограничений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

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