Symfony:错误:验证表单时无法重新声明类SymfonyComponentSecurityCoreU


Symfony : Error: Cannot redeclare class SymfonyComponentSecurityCoreUserUserInterface when validating a form

我使用的是Symfony v3.1,在验证用于创建用户的表单时出错。

这是堆栈跟踪:

FatalErrorException in UserInterface.php line 34:
Error: Cannot redeclare class Symfony'Component'Security'Core'User'UserInterface
in UserInterface.php line 34
at Composer'Autoload'includeFile() in ClassLoader.php line 302
at ClassLoader->loadClass() in AnnotationRegistry.php line 145
at call_user_func:{/vagrant/ogam/website/htdocs/server/ogamServer/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php:145}() in AnnotationRegistry.php line 145
at AnnotationRegistry::loadAnnotationClass() in DocParser.php line 447
at DocParser->classExists() in DocParser.php line 707
at DocParser->Annotation() in DocParser.php line 641
at DocParser->Annotations() in DocParser.php line 334
at DocParser->parse() in AnnotationReader.php line 257
at AnnotationReader->getMethodAnnotations() in CachedReader.php line 151
at CachedReader->getMethodAnnotations() in AnnotationLoader.php line 74
at AnnotationLoader->loadClassMetadata() in LoaderChain.php line 57
at LoaderChain->loadClassMetadata() in LazyLoadingMetadataFactory.php line 127
at LazyLoadingMetadataFactory->getMetadataFor() in RecursiveContextualValidator.php line 339
at RecursiveContextualValidator->validateObject() in RecursiveContextualValidator.php line 154
at RecursiveContextualValidator->validate() in FormValidator.php line 51
at FormValidator->validate() in RecursiveContextualValidator.php line 842
at RecursiveContextualValidator->validateInGroup() in RecursiveContextualValidator.php line 553
at RecursiveContextualValidator->validateClassNode() in RecursiveContextualValidator.php line 359
at RecursiveContextualValidator->validateObject() in RecursiveContextualValidator.php line 154
at RecursiveContextualValidator->validate() in RecursiveValidator.php line 115
at RecursiveValidator->validate() in ValidationListener.php line 55

我的用户对象如下所示:

<?php
namespace MyBundle'Entity'Website;
use Doctrine'ORM'Mapping as ORM;
use Symfony'Component'Validator'Constraints as Assert;
use MyBundle'Entity'Website'Role as Role;
use MyBundle'Entity'Website'Provider as Provider;
use Symfony'Component'Security'Core'User'UserInterface;
use Symfony'Bridge'Doctrine'Validator'Constraints'UniqueEntity;
/**
 * User.
 *
 * @ORM'Table(name="users", schema="website")
 * @ORM'Entity(repositoryClass="MyBundle'Repository'Website'UserRepository")
 * @UniqueEntity(fields="login", message="Login already taken")
 * @UniqueEntity(fields="email", message="Email already taken")
 */
class User implements UserInterface, 'Serializable {
    /**
     * The login.
     *
     * @var string @Assert'Length(max=50)
     *      @Assert'NotBlank()
     *      @ORM'Column(name="user_login", type="string", length=50, nullable=false, unique=true)
     *      @ORM'Id
     */
    private $login;
    /**
     * The user name.
     *
     * @var string @ORM'Column(name="user_name", type="string", length=50, nullable=true)
     *      @Assert'Length(max=50)
     */
    private $username;

它是我的代码中唯一实现UserInterface的东西。我没有使用FOSUserBundle。在验证表单时,注释解析器会尝试实例化数据对象及其父对象。

我曾尝试在控制器中的一个函数中使用"$this->createFormBuilder($user,…"创建表单,我曾尝试使用FormBuilderInterface在一个单独的类中创建表单,但在这两种情况下都出现了问题。

我曾尝试设置"data_class"选项,但问题仍然存在。

我已经评论了表单中的大多数字段,只留下登录字段,但它仍然是一样的。

欢迎任何帮助

好吧,我的错。

问题出现在用户实体的注释中。我使用了@字符,它被解读为一个注释。

    /**
     * Méthode à implémenter pour respecter @UserInterface.
     */
    public function getSalt() {
        // The algorithm doesn't require a separate salt.
        // You *may* need a real salt if you choose a different encoder.
        return null;
    }