0

我有以下 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 的控制器。如果您知道如何使用表单进行这项工作也会有很大帮助!

4

1 回答 1

3

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

但因此不参与验证过程的任何部分。所以你需要通过类似的东西设置一个断言规则

   /**
   * @Assert\Length(max = 40)
   */
于 2015-10-01T15:11:34.527 回答