Symfony2 FOSUserBundle:访问配置文件构建表单中的DB

时间:2015-03-16 10:54:11

标签: symfony fosuserbundle

我在Symfony2上使用FOSUserBundle。

我已将个人资料表单类型扩展为包含我的字段。

我想用DB中的一个值预先填充其中一个字段(不在用户实体中)。

基本上我需要从buildForm内部访问DB。

我不希望(如果可能的话)覆盖原始控制器。

编辑:我可能不能使用“实体”字段类型(据我所知)创建一个选项的等价物(从DB加载的值)。我需要让字段可编辑。我需要访问当前用户实体,以便我可以访问其ID。使用该ID,我可以执行查询并从我的数据库中获取文本值(它是与用户关联的许可证),并使用该值填充表单的其中一个文本字段。我可以覆盖用户类的getLicense()方法来执行我的查询吗?如何在实体内部访问数据库?

提示?

谢谢!

1 个答案:

答案 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');
                }
        ));
}