使用Doctrine2注释进行Symfony2验证

时间:2015-10-01 14:32:06

标签: php validation symfony doctrine-orm symfony-validator

我有以下Doctrine实体,我也希望将其限制用于验证。

/**
 * @var string
 *
 * @ORM\Column(type="string", length=40)
 * @Assert\Valid
 */
private $birthName;

我使用以下验证,它适用于symfony特定注释但不适用于Doctrine设置限制!

// Validate data
$validator = $this->get('validator');
$errors = $validator->validate($user);

if (count($errors) > 0) {
    $response = new JsonResponse(array(
        'error' => 'User could not be created.' . PHP_EOL . (string)$errors
    ));
    $response->setStatusCode(400);

    return $response;
}
  

如果让symfony验证器将学说限制用作设置,我该怎么办?

现状:
我读了[1]和[2],但到目前为止我还没有使用表单,因为我有一个控制器返回JSON。如果您知道如何使用表单进行此操作也会有很多帮助!

1 个答案:

答案 0 :(得分:3)

Doctrine映射与验证无关。 代码@ORM\Column(type="string", length=40)仅将属性映射到数据库字段,如果要使用doctrine创建模式,则将数据库字段的最大长度设置为等于40个字符。

但因此不会采取验证过程的任何部分。 因此,您需要通过类似

的设置来设置断言规则
   /**
   * @Assert\Length(max = 40)
   */