Я использую FOSUserBundle, и я пытаюсь настроить регистрационную форму, выполнив следующую процедуру:
https://symfonycasts.com/screencast/fosuserbundle/customize-forms
, но у меня возникла проблема:
1-Новое поле "nom" не отображается в базе данных даже после обновления базы данных с использованием:
php bin / console доктрина: схема: обновление --force
результат:
Ничего не обновляется - ваша база данных уже синхронизирована с текущими метаданными сущности.
register_content.html.twig:
{% trans_default_domain 'FOSUserBundle' %}
<h1> </h1>
{{ form_start(form, {'method': 'post', 'action': path('fos_user_registration_register'), 'attr': {'class': 'fos_user_registration_register'}}) }}
<label class="col-xs-12 col-sm-12 col-md-12 col-lg-12 form-control-label " for="name" >Nom d'utilisateur <span class="required"></span>
</label>
<div class="col-xs-9 col-sm-9 col-md-9 col-lg-9">
{{ form_widget(form.username, {'attr': {'class' : 'form-control '}}) }}
</div>
<label class="col-xs-12 col-sm-12 col-md-12 col-lg-12 form-control-label " for="name" >E-mail <span class="required"></span>
</label>
<div class="col-xs-9 col-sm-9 col-md-9 col-lg-9">
{{ form_widget(form.email, {'attr': {'class' : 'form-control '}}) }}
</div>
<label class="col-xs-12 col-sm-12 col-md-12 col-lg-12 form-control-label " for="name" >Password <span class="required"></span>
</label>
<div class="col-xs-9 col-sm-9 col-md-9 col-lg-9">
{{ form_widget(form.plainPassword, {'attr': {'class' : 'form-control '}}) }}
</div>
<label class="col-xs-12 col-sm-12 col-md-12 col-lg-12 form-control-label " for="name" >Nom <span class="required"></span>
</label>
<div class="col-xs-9 col-sm-9 col-md-9 col-lg-9">
{{ form_widget(form.nom, {'attr': {'class' : 'form-control '}}) }}
</div>
<div>
<input class="btn btn-primary" type="submit" value="{{ 'registration.submit'|trans }}" />
</div>
{ form_end(form) }}
RegistrationFormType:
class RegistrationFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('nom');
}
public function getParent()
{
return BaseRegistrationFormType::class;
}
public function getBlockPrefix()
{
return 'storeData.form.registration';
}
}
User.php
/**
* @ORM\Entity(repositoryClass="StoreDataBundle\Repository\UserRepository")
* @ORM\Table(name=" `user` ")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/
protected $id;
/**
* @ORM\Column(type="string", length=255)
*
* @Assert\NotBlank(message="Please enter your name.", groups=
{"Registration", "Profile"})
* @Assert\Length(
* min=3,
* max=255,
* minMessage="The name is too short.",
* maxMessage="The name is too long.",
* groups={"Registration", "Profile"}
* )*/
protected $nom;
/**
* @return mixed
*/
public function getNom()
{
return $this->nom;
}
/**
* @param mixed $nom
*/
public function setNom($nom)
{
$this->nom = $nom;
}
config.yml
fos_user:
db_driver: orm
firewall_name: main
user_class: StoreDataBundle\Entity\User
service: # this lines
mailer: fos_user.mailer.twig_swift # this lines
from_email:
address: "hello@aquanote.com"
sender_name: "AquaNote Postman"
registration:
form:
type: StoreDataBundle\Form\RegistrationFormType
service.yml
storeData.form.registration:
class: StoreDataBundle\Form\RegistrationFormType
tags:
- { name: form.type }
security.yml
security:
encoders:
StoreDataBundle\Entity\User: bcrypt
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
anonymous: true
logout: true
remember_me:
secret: '%secret%'
ОБНОВЛЕНИЕ: User.orm.yml
StoreDataBundle\Entity\User:
type: entity
table: null
repositoryClass: StoreDataBundle\Repository\UserRepository
id:
id:
type: integer
id: true
generator:
strategy: AUTO
lifecycleCallbacks: { }
Обновление:
Я обнаружил свою ошибку: у меня был файл yml и аннотация, поэтому он не работал