【发布时间】:2016-03-21 17:36:08
【问题描述】:
我像这样覆盖 FOSUserBundle 表单:
class RegistrationType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->remove('username')
;
}
public function getParent()
{
return 'fos_user_registration';
}
public function getName()
{
return 'app_user_registration';
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Application\Sonata\UserBundle\Entity\User',
));
}
}
目的是从注册表单中删除用户名字段。 它有效,但是当我使用表单时出现此错误:
Please enter a username
所以我试图通过以下文档覆盖 FormHandler:https://symfony.com/doc/1.3.x/bundles/FOSUserBundle/overriding_forms.html#overriding-form-handlers
但在我删除字段的情况下,我真的不知道该怎么做?
这是我的 yaml 文件
# service.yml
services:
app.form.registration:
class: Application\Sonata\UserBundle\Form\RegistrationType
tags:
- { name: form.type, alias: app_user_registration }
app.form.handler.registration:
class: Application\Sonata\UserBundle\Handler\RegistrationFormHandler
arguments: ["@fos_user.registration.form", "@request", "@fos_user.user_manager", "@fos_user.mailer", "@fos_user.util.token_generator"]
scope: request
public: false
# config.yml
fos_user:
db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
firewall_name: main
user_class: Application\Sonata\UserBundle\Entity\User
group:
group_class: Application\Sonata\UserBundle\Entity\Group
group_manager: sonata.user.orm.group_manager
service:
user_manager: sonata.user.orm.user_manager
registration:
form:
type: Application\Sonata\UserBundle\Form\RegistrationType
handler: app.form.handler.registration
【问题讨论】:
标签: symfony fosuserbundle