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 レベルではるかに理にかなっています。ただし、フォームで強制的に実行する必要がある場合は、カスタムの制約を記述できます。

于 2012-11-12T13:19:21.750 に答える