2016-08-18 3 views
1

Ich benutze Symfony v3.1 und ich habe einen Fehler bei der Validierung eines Formulars für die Erstellung eines Benutzers. HierSymfony: Fehler: Kann die Klasse Symfony Component Security Core User UserInterface t nicht bei der Validierung eines Formulars deklarieren

ist der Stack-Trace:

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 

Meine User-Objekt sieht wie folgt aus:

<?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; 

Und es ist das einzige, was in meinem Code, der Userinterface implementiert. Ich verwende FOSUserBundle nicht. Es sieht so aus, als ob der Annotationsparser beim Validieren des Formulars versucht, das Datenobjekt und seine Eltern zu instanziieren.

Ich habe versucht, das Formular in einer Funktion im Controller mit "$ this-> createFormBuilder ($ user, ...") zu erstellen, ich habe versucht, das Formular in einer getrennten Klasse mit dem FormBuilderInterface zu erstellen, aber das Problem scheint in beiden Fällen.

ich habe versucht, die „data_class“ Option zu setzen, aber das Problem bleibt.

ich habe die meisten der Felder in Form kommentiert, nur das Login-Feld verlassen aber es ist immer noch das selbe.

Irgendwelche Hilfe begrüßen ...

+0

Es gibt zu wenige Informationen zu helfen. – brzuchal

+0

Überprüfen Sie die Dateinamen und wenn Sie Git verwenden, stellen Sie sicher, dass Sie den Dateinamen korrekt haben. Es ist mir passiert, dass die ursprüngliche Datei in Git Some Interface war und dann in SomeInterface umbenannt wurde. Git scheint die Groß-/Kleinschreibung nicht zu beachten, aber PHP ist es. – Carlos

+0

Post-Formulartyp für diesen Benutzer. Was passiert auch, wenn Sie diese Schnittstelle nicht implementieren? – mmmm

Antwort

1

OK, mein Schlechter.

Das Problem war in einem Kommentar der Benutzereinheit. Ich habe das Zeichen @ verwendet und es wurde als Anmerkung gelesen.

/** 
    * 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; 
    } 
Verwandte Themen