FOSUserBundle:如何将自定义字段添加到表单中



我安装了 FOSUserBundle 并扩展了注册和配置文件表单以满足我的站点外观和感觉,所以现在我的配置文件表单位于应用程序\资源\FOSUserBundle\views\Profile 中。一切正常。

我在我的用户实体中添加了一些字段,运行 doctrine:generate:entities 和 doctrine:schema:update,数据库已正确更新,但我不知道如何在上面的文件夹中的 edit.html.twig 中添加这个新字段,我只是希望让它工作将它们添加到模板中。

谢谢

您必须先创建自定义表单,例如

// src/AppBundle/Form/UserType.php
namespace AppBundleForm;
use SymfonyComponentFormAbstractType;
use SymfonyComponentFormFormBuilderInterface;
class UserType extends AbstractType {
    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder->add('name');
    }
    public function getParent() {
        return 'FOSUserBundleFormTypeUserFormType';
        // Or for Symfony < 2.8
        // return 'fos_user_profile_edit';
    }
    public function getBlockPrefix() {
        return 'app_user_profile';
    }
    // For Symfony 2.x
    public function getName(){
        return $this->getBlockPrefix();
    }
}

将表单类型配置为服务

# app/config/services.yml
services:
    app.form.profile:
        class: AppBundleFormUserType
        tags:
            - { name: form.type, alias: app_user_profile }

以及要扩展/覆盖的配置文件

# app/config/config.yml
fos_user:
    # ...
    profile:
        form:
            type: AppBundleFormUserType
            # if you are using Symfony < 2.8 you should use the type name instead
            # type: app_user_profile
您需要

在UserType中添加类似以下内容:

class UserType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */    
     public function buildForm(FormBuilderInterface $builder, array $options)
     {
         $builder
            //for each new field
             ->add('myNewField')
         ;
     }
}

然后,您的字段将在您的 Twig 模板中可用。希望这有帮助

相关内容

  • 没有找到相关文章

最新更新