2017-03-02 9 views
0

Ich benutze Symfony 2.8 und FosUserBundle. Ich habe das Problem, dass ich keine neuen Eigenschaften zu meiner Entität hinzufügen kann. Mein Entity Benutzer sieht aus wie dieseSpalte zu FosUserBundle hinzufügen Tabelle & Formular Symfony 2.8

<?php 
// src/AppBundle/Entity/User.php 

namespace AppBundle\Entity; 

use FOS\UserBundle\Entity\User as BaseUser; 
use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\Entity 
* @ORM\Table(name="fos_user") 
*/ 
class User extends BaseUser 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @ORM\name 
    * @ORM\Column(type="VARCHAR") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $name; 

    /** 
    * @ORM\lastname 
    * @ORM\Column(type="VARCHAR") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $lastname; 

    public function __construct() 
    { 
     parent::__construct(); 
     // your own logic 
    } 

    public function setName($name) 
    { 
     $this->name = $name; 

     return $this; 
    } 

    public function setLastname($lastname) 
    { 
     $this->lastname = $lastname; 

     return $this; 
    } 
} 

Aber ich bekomme immer die Fehler: „AnnotationException in AnnotationException.php Linie 54: [Semantische Fehler] Die Anmerkung "@Doctrine \ ORM \ Mapping \ name" in Immobilien AppBundle \ Entity \ User :: $ name existiert nicht oder konnte nicht automatisch geladen werden. "

Vielleicht hilft mir meine RegistrationFormType, weil ich es auch geändert habe.

<?php 

/* 
* This file is part of the FOSUserBundle package. 
* 
* (c) FriendsOfSymfony <http://friendsofsymfony.github.com/> 
* 
* For the full copyright and license information, please view the LICENSE 
* file that was distributed with this source code. 
*/ 

namespace FOS\UserBundle\Form\Type; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 
use Symfony\Component\OptionsResolver\OptionsResolverInterface; 

class RegistrationFormType extends AbstractType 
{ 
    private $class; 

    /** 
    * @param string $class The User class name 
    */ 
    public function __construct($class) 
    { 
     $this->class = $class; 
    } 

    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('username', null, array('label' => 'form.username', 'translation_domain' => 'FOSUserBundle')) 
      ->add('email', 'email', array('label' => 'form.email', 'translation_domain' => 'FOSUserBundle')) 
      ->add('plainPassword', 'repeated', array(
       'type' => 'password', 
       'options' => array('translation_domain' => 'FOSUserBundle'), 
       'first_options' => array('label' => 'form.password'), 
       'second_options' => array('label' => 'form.password_confirmation'), 
       'invalid_message' => 'fos_user.password.mismatch', 
      )) 
      ->add('name') 
      ->add('lastname') 
     ; 
    } 

    public function setDefaultOptions(OptionsResolverInterface $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => $this->class, 
      'intention' => 'registration', 
     )); 
    } 

    public function getName() 
    { 
     return 'fos_user_registration'; 
    } 
} 

Ich habe beide Felder Name und Nachname manuell in MySQL hinzugefügt.

Welche Dateien habe ich vergessen zu bearbeiten?

Mit besten Grüßen, Thomas

Antwort

0

Ich denke, Sie sollten die folgende Korrektur: Die Entity-Definition

namespace AppBundle\Entity; 

use FOS\UserBundle\Entity\User as BaseUser; 
use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\Entity 
* @ORM\Table(name="fos_user") 
*/ 
class User extends BaseUser 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    *@var string 
    * 
    * @ORM\Column(name="name",type="string") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $name; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="lastname",type="string") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $lastname; 

    public function __construct() 
    { 
     parent::__construct(); 
     // your own logic 
    } 

    public function setName($name) 
    { 
     $this->name = $name; 

     return $this; 
    } 

     public function getName() 
    { 
     return $this->name; 
    } 

    public function setLastname($lastname) 
    { 
     $this->lastname = $lastname; 

     return $this; 
    } 
     public function getLastname() 
    { 


     return $this->lastname ; 
    } 

} 

Auch brauchen Sie nicht die FOSUserbundle Formtype zu bearbeiten, sondern in eine neue erstellen bündeln FormType basierend auf Ihrer Benutzer Klasse.

Verwandte Themen