6

このエラーが発生します:

メッセージ:「[SemanticalError]プロパティUser ::$nameのアノテーション「@Symfony\ Component \ Validator \ Constraints \ Length」が存在しないか、自動ロードできませんでした。」

これはGithubhttps://github.com/symfony/Validatorのコードです

use Symfony\Component\Validator\Validation; 
use Symfony\Component\Validator\Constraints as Assert;

class User {
    /**
     * @Assert\Length(min = 3)
     * @Assert\NotBlank
     */
    private $name;

    /**
     * @Assert\Email
     * @Assert\NotBlank
     */
    private $email;

    public function __construct($name, $email)
    {
        $this->name = $name;
        $this->email = $email;
    }

    /**
     * @Assert\True(message = "The user should have a Google Mail account")
     */
    public function isGmailUser()
    {
        return false !== strpos($this->email, '@gmail.com');
    } 
}

$validator = Validation::createValidatorBuilder()
    ->enableAnnotationMapping()
    ->getValidator();

$user = new User('John Doe', 'john@example.com');

$violations = $validator->validate($user);

この問題を解決するにはどうすればよいですか?

4

6 に答える 6

5

DoctrineはautoloadPHPを使用しません。autoloadRegistryに登録する必要があります。

AnnotationRegistry::registerAutoloadNamespace("Symfony\Component\Validator\Constraint", "path/to/symfony/library/validator");
于 2012-09-18T04:21:06.410 に答える
0

PHP と Doctrine アノテーションにバグがあり、インクルードによって混乱することがありuseます。クラス宣言に PHPDoc コメントを追加する必要があり、このエラーはなくなります。

于 2014-09-04T15:30:40.287 に答える
0

Length 制約は Symfony 2.1 で追加されたため、Symfony 2.0 を使用している場合は使用できません。

長さの制約については、ドキュメントを参照してください。

于 2012-10-28T10:01:30.383 に答える