Symfony实体表单使用情况

时间:2015-06-09 15:27:51

标签: php forms symfony

我正在Symfony2

中构建以下表单
$form = $this->createFormBuilder($user)
            ->setMethod('POST')
            ->setAction('')
            ->add('username','text',array('attr'=>array('class'=>'form-control')))
            ->add('password','password',array('attr'=>array('class'=>'form-control')))
            ->add('title','text',array('attr'=>array('class'=>'form-control')))
            ->add('firstName','text',array('attr'=>array('class'=>'form-control')))
            ->add('surname','text',array('attr'=>array('class'=>'form-control')))
            ->add('school','entity', array(
                'class' => 'AppBundle:Schools',
                'choices' => $sch->mySchool(),
                'em' => $this->getDoctrine()->getEntityManager(), 
                'property'=>'title', 
                'attr'=>array('class'=>'form-control')
                )
            )
            ->add('role','entity',array('class'=>'AppBundle:UserRoles','property'=>'description','attr'=>array('class'=>'form-control')))
            ->add('save','submit',array('label'=>'Save','attr'=>array('class'=>'btn btn-primary')))
            ->getForm();

,问题在于以下一行

'em' => $this->getDoctrine()->getEntityManager(), 

阅读了本页http://symfony.com/doc/current/reference/forms/types/entity.html我正在尝试使用“使用选择”的方式,我的表单显示并返回所有学校,而不仅仅是我的方法实际返回的一所学校。

我已经浏览了一下,无法找到使用'em'值的示例,以前有人使用过此方法吗?

我不愿意沿着'query_builder'路线走下去,因为我希望能够在我正在构建的应用程序的其他区域中使用mySchool()方法。

干杯

2 个答案:

答案 0 :(得分:0)

如果您特别想要使用其他实体管理器实例,那么em选项就在那里。大多数应用程序只有一个实体管理器,因此您很少看到使用它。

话虽如此,如果您直接提供选择,那么EntityType根本不需要知道要使用哪个实体管理器,因此我省略了它 - 它'明确包含它的可能性会覆盖您的choices

答案 1 :(得分:0)

我想你正在通过一所学校"对象"选择"。
"选择" option应该是一个数组或者是\ Traversable的instanceof。当它们都不是时,它会忽略该选项并回退到默认行为>从DB

加载所有对象

尝试以下方法:

'choices' => array($sch->mySchool()),