您好我正在使用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
中的实体列表中设置选择的最佳方法是什么?
答案 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')
;
}