Я использую 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 }
Благодарим за помощь.
как '$ lastname', так и' $ pays' сопоставляются столбцу 'lastname'. Не уверен, что это проблема, но это не поможет. Кроме того, вы изменили '% fos_user.model.user.class%', чтобы использовать свой новый класс сущностей? – DevDonkey
Как я должен был это сделать? –
У вас есть настройки для config.yml или parameters.yml для 'fos_user'. вам нужно указать это на класс сущности. – DevDonkey