我安装了 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 模板中可用。希望这有帮助