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

时间:2015-03-06 03:04:19

标签: symfony sonata-admin symfony-sonata

您好我正在使用sonata admin bundle

所以我要创建一个表单,我需要从这些表单中选择一个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))
        ;
 }

在此之前,我在实体__toString()

中添加了Facultdad

因此,当我尝试添加一些寄存器时,我得到并且错误,显然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中的实体列表中设置选择的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

而不是选择,你需要使用" 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')
    ;
}