【问题标题】:Overriding Default FOSUserBundle Forms Handler覆盖默认 FOSUserBundle 表单处理程序
【发布时间】: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


    【解决方案1】:

    我已将此代码添加到我的实体用户以使其工作:

    public function setEmail($email)
        {
            parent::setEmail($email);
            $this->setUsername($email);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-13
      • 2015-10-07
      • 1970-01-01
      • 2020-11-27
      • 2016-06-04
      相关资源
      最近更新 更多