我安装了FOSUserBundle并扩展了注册和个人资料表单以满足我的网站外观,所以现在我的个人资料表单位于app \ Resources \ FOSUserBundle \ views \ Profile中。一切都很好。
我在我的User实体中添加了一些字段,运行doctrine:generate:entities和doctrine:schema:update并且db已正确更新,但我不知道如何在edit.html.twig中添加这些新字段在上面的文件夹中,我只是希望能够将它们添加到模板中。
谢谢
答案 0 :(得分:1)
您必须先创建自定义表单,例如
// src/AppBundle/Form/UserType.php
namespace AppBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class UserType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('name');
}
public function getParent() {
return 'FOS\UserBundle\Form\Type\UserFormType';
// 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: AppBundle\Form\UserType
tags:
- { name: form.type, alias: app_user_profile }
以及要扩展/覆盖的配置文件
# app/config/config.yml
fos_user:
# ...
profile:
form:
type: AppBundle\Form\UserType
# if you are using Symfony < 2.8 you should use the type name instead
# type: app_user_profile
答案 1 :(得分:0)
您需要在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模板中可用。 希望这有帮助