设置一个字段,例如在奏鸣曲管理包中选择

Set a field like choose in sonata Admin bundle

您好,我正在使用 sonata admin bundle

所以我要创建一个表格,我需要在其中 select 从这些列表中选择一个 Facultad 实体,这是创建和编辑 Proyecto 记录的方法。

 protected function configureFormFields(FormMapper $formMapper)
 {
        $em = $this->getConfigurationPool()->getContainer()->get('doctrine.orm.entity_manager');
        $facultades = $em->getRepository('UIFIIntegrantesBundle:Facultad')->findAll();
        $formMapper
            ->add('nombre')
            ->add('facultad','choice',array('choices'=>$facultades))
        ;
 }

在此之前,我在实体 Facultdad

中添加了 __toString()

因此,当我尝试添加一些寄存器时出现错误,显然 Facultad 实体检索的是 id 值,而不是实体。

Catchable Fatal Error: Argument 1 passed to UIFI\IntegrantesBundle\Entity
\Proyecto::setFacultad() must be an instance of UIFI\IntegrantesBundle\Entity
\Facultad, integer given, called in /Development/repositorios/uifi/vendor
/symfony/symfony/src/Symfony/Component/PropertyAccess/PropertyAccessor.php on 
line 442 and defined 

那么从 sonata admin class 中的实体列表中设置选择的最佳方法是什么?

不是选择,你需要使用"sonata_type_model" http://sonata-project.org/bundles/admin/master/doc/reference/form_types.html#sonata-type-model

在这种情况下,您的代码将变为:

protected function configureFormFields(FormMapper $formMapper)
{     
    $formMapper
        ->add('nombre')
        ->add('facultad','sonata_type_model')
    ;
}