我在Symfony2上使用FOSUserBundle。
我已将个人资料表单类型扩展为包含我的字段。
我想用DB中的一个值预先填充其中一个字段(不在用户实体中)。
基本上我需要从buildForm内部访问DB。
我不希望(如果可能的话)覆盖原始控制器。
编辑:我可能不能使用“实体”字段类型(据我所知)创建一个选项的等价物(从DB加载的值)。我需要让字段可编辑。我需要访问当前用户实体,以便我可以访问其ID。使用该ID,我可以执行查询并从我的数据库中获取文本值(它是与用户关联的许可证),并使用该值填充表单的其中一个文本字段。我可以覆盖用户类的getLicense()方法来执行我的查询吗?如何在实体内部访问数据库?
提示?
谢谢!
答案 0 :(得分:1)
您需要实体字段:
http://symfony.com/doc/current/reference/forms/types/entity.html
以下是一个例子:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('foobar', 'entity', array(
'class' => 'DummyBundle:Test',
'property' => 'name',
'multiple' => false,
'expanded' => false,
'query_builder' => function(\Doctrine\ORM\EntityRepository $er) {
return $er->createQueryBuilder('i')
->orderBy('i.name', 'ASC');
}
));
}