Symonfy2验证:在yml中定义约束,并验证数组

Mic*_*ine 7 php forms validation symfony

我所要做的就是:

  1. 在yml中定义约束

  2. 用它来验证一个数组

说,一个产品阵列:

$product['name'] = 'A book';
$product['date'] = '2012-09';
$product['price'] = '21.5';
Run Code Online (Sandbox Code Playgroud)

怎么做?

cho*_*obs -1

在你的validation.yml中:

Acme\DemoBundle\Entity\AcmeEntity:
    properties:
        price:
            - NotBlank: ~
            - Acme\DemoBundle\Validator\Constraints\ContainsAlphanumeric: ~
Run Code Online (Sandbox Code Playgroud)

并且您的包含字母数字:

<?php
    namespace Acme\DemoBundle\Validator\Constraints;
    use Symfony\Component\Validator\Constraint;
    use Symfony\Component\Validator\ConstraintValidator;

    class ContainsAlphanumericValidator extends ConstraintValidator
    {
        public function validate($value, Constraint $constraint)
        {
            if (!preg_match('/^[a-zA-Za0-9]+$/', $value, $matches)) {
                $this->context->addViolation($constraint->message, array('%string%' => $value));
            }
        }
    }
?>
Run Code Online (Sandbox Code Playgroud)