2015-08-15 2 views
0

Я использую Symfony 2, и я бы управлял своими пользователями FOSUserBundle. Я создал комплект, все работает. Только поля FOSUserBundle предлагают недостаточно для меня. Я хотел бы добавить больше полей.Symfony 2 - FOSUserBundle - Добавить поля bdd

Итак, я изменил свой объект, который наследует FOSUserBundle и добавляет два поля. Мне удалось разместить эти два поля в моей регистрационной форме (зарегистрироваться). Но даже после php app/console doctrine: schema: update --force добавленные поля не отображаются в моем db. Нечего делать, остальное bdd по умолчанию FOSUserBundle. Более того, это довольно странно, потому что после моей команды в терминале я получаю Ничего не обновлять - ваша база данных уже синхронизирована с текущими метаданными объекта. в ответ.

Мой код:

<?php 

namespace FP\UserBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use FOS\UserBundle\Model\User as BaseUser; 
use Symfony\Component\Validator\Constraints as Assert; 

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

    /** 
    * @var string 
    * 
    * @ORM\Column(name="lastname", type="text") 
    */ 
    private $lastname; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="lastname", type="text") 
    */ 
    private $pays; 

    /** 
    * Get pays 
    * 
    * @return string 
    */ 
    public function getPays() 
    { 
     return $this->pays; 
    } 

    /** 
    * Get id 
    * 
    * @return integer 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 

    /** 
    * Set lastname 
    * 
    * @param string $lastname 
    * @return User 
    */ 
    public function setLastname($lastname) 
    { 
     $this->lastname = $lastname; 

     return $this; 
    } 

    /** 
    * Get lastname 
    * 
    * @return string 
    */ 
    public function getLastname() 
    { 
     return $this->lastname; 
    } 
} 

.

<?php 

namespace FP\UserBundle\Form\Type; 

use Symfony\Component\Form\FormBuilderInterface; 
use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType; 

class RegistrationFormType extends BaseType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     parent::buildForm($builder, $options); 

     // add your custom field 
     $builder 
      ->add('lastname') 
      ->add('pays') 
     ; 
    } 

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

.

# src/FP/UserBundle/Resources/config/services.yml 
services: 
    FP_user.registration.form.type: 
     class: FP\UserBundle\Form\Type\RegistrationFormType 
     arguments: [%fos_user.model.user.class%] 
     tags: 
      - { name: form.type, alias: fp_user_registration } 

Благодарим за помощь.

+0

как '$ lastname', так и' $ pays' сопоставляются столбцу 'lastname'. Не уверен, что это проблема, но это не поможет. Кроме того, вы изменили '% fos_user.model.user.class%', чтобы использовать свой новый класс сущностей? – DevDonkey

+0

Как я должен был это сделать? –

+0

У вас есть настройки для config.yml или parameters.yml для 'fos_user'. вам нужно указать это на класс сущности. – DevDonkey

ответ

0

Я думаю, что моя ошибка может случиться моим приложение/security.yml файла ... пришло

security: 
    encoders: 
     FP\UserBundle\Entity\User: sha512 

    # http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers 
    providers: 
     main: 
      id: fos_user.user_provider.username 
     in_memory: 
      memory: ~ 

    firewalls: 
     # disables authentication for assets and the profiler, adapt it according to your needs 
     dev: 
      pattern: ^/(_(profiler|wdt)|css|images|js)/ 
      security: false 

     main: 
      pattern:  ^/ 
      anonymous:  true 
      provider:  main 
      form_login: 
       login_path: fos_user_security_login 
       check_path: fos_user_security_check 
      logout: 
       path:  fos_user_security_logout 
       target: /
      remember_me: 
       key:  %secret% 
0

Моей ошибки из файла в User.orm Resources/конфиг/доктрина UserBundle моего расслоение. Поэтому я удалил.