0

我需要在控制器动作中动态添加约束,所以我这样做:

use Doctrine\Bundle\MongoDBBundle\Validator\Constraints\Unique;

// ...

    $form = $this->createFormBuilder($user)
        ->add('email', 'email', array(
            'constraints' => array(
                new NotBlank(),
                new MinLength(8),
                new MaxLength(100),
                new Email(),
                new Unique(),
            ),
        ))
        ->getForm();

但我得到这个错误:

The options "fields" must be set for constraint Doctrine\Bundle\MongoDBBundle\Validator\Constraints\Unique

我尝试将array('fields' => 'email')and传递array('fields' => array('email'))给构造函数,但没有奏效:Warning: get_class() expects parameter 1 to be object, string given in /home/www/dev/public/pixfeed/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php line 63

那么如何使用这个类呢?

4

1 回答 1

0

Doctrine\Bundle\MongoDBBundle\Validator\Constraints\Unique 类通常用于整个 Document。例如

/**
 * @MongoDB\Document(collection="users")
 * @MongoDBUnique(fields="email")
 */
class User

在我看来,这在 ORM/ODM 级别上更有意义,而不仅仅是检查用户输入是否是唯一的。但是,如果您被迫在 Form 中执行此操作,则可以编写自定义约束

于 2012-11-12T13:19:21.750 回答