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 ...
Es gibt zu wenige Informationen zu helfen. – brzuchal
Ü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
Post-Formulartyp für diesen Benutzer. Was passiert auch, wenn Sie diese Schnittstelle nicht implementieren? – mmmm