2016-08-18 4 views
1

私はSymfony v3.1を使用していますが、ユーザーの作成フォームを検証する際にエラーがあります。ここでSymfony:エラー:フォームの検証時にSymfony Component Security Core User UserInterface tクラスを再宣言できません。

は、スタックトレースです:

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」オプションを設定しようとしたが、問題が残っている。

私は、ログインフィールドを残して、フォーム内のフィールドのほとんどをコメントしましたしかしそれはまだ同じです。

何か助けてください...

+0

役立つ情報はほとんどありません。 – brzuchal

+0

ファイル名を確認し、gitを使用している場合は、ファイル名が正しいことを確認してください。 Gitに置かれた元のファイルがSomeinterfaceであり、SomeInterfaceに名前が変更されたことが私に起こりました。 Gitは大文字と小文字を区別しないようですが、PHPはです。 – Carlos

+0

このユーザーの投稿フォームタイプ。また、このインターフェースを実装していないとどうなりますか? – mmmm

答えて

1

OK、悪いです。

問題はUserエンティティのコメントにありました。私は@文字を使用しましたが、それは注釈として読み取られました。

/** 
    * 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; 
    } 
関連する問題