symfony - 自定义 FOSUserBundle 的注册表单时未将新字段添加到数据库
问题描述
我正在使用 FOSUserBundle,我正在尝试按照以下教程自定义注册表单:
https://symfonycasts.com/screencast/fosuserbundle/customize-forms
但我有一个问题:
1- 即使在使用以下方法更新数据库后,新字段“nom”在数据库中也不可见:
php bin/控制台原则:模式:更新--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) }}
注册表格类型:
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';
}
}
用户.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;
}
配置.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
服务.yml
storeData.form.registration:
class: StoreDataBundle\Form\RegistrationFormType
tags:
- { name: form.type }
安全.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%'
更新:用户.orm.yml
StoreDataBundle\Entity\User:
type: entity
table: null
repositoryClass: StoreDataBundle\Repository\UserRepository
id:
id:
type: integer
id: true
generator:
strategy: AUTO
lifecycleCallbacks: { }
更新:
我发现了我的错误:我有一个 yml 文件和注释,这就是它不起作用的原因
解决方案
推荐阅读
- vba - 无法单击网页中的某些灰色提交按钮
- activemq - 在 IBM MQ 和 ActiveMQ 之间建立连接
- python - 将图像放在 PyQt QTableWidget 标题中
- android - 片段替换显示两个片段
- mysql - MySql 查询以检索 2 个用户之间的对话
- php - 如何将数组重构为多数组转换函数?
- c# - Unity 在屏幕上显示/隐藏菜单
- ajax - 使用 HTTP2 如何限制并发请求的数量?
- javascript - `NoSuchSessionError: invalid session id` 使用 selenium 时,即使应用程序工作正常
- c# - 表末尾的基本模型列顺序