我正在使用Symfony 3.2,choice_value
在formType中使用时出现此错误:
Error: Call to a member function getSlug() on a non-object" at D:\wamp\www\my_project\src\AppBundle\Form\Bien\BienType.php line 77
use AppBundle\Entity\Ville;
//...
->add('ville', EntityType::class, array(
'class' => 'AppBundle:Ville',
'label' => 'Ville',
'choice_label' => 'nom',
'placeholder' => 'Ville ',
'multiple' => false,
'expanded' => false,
'choice_value' => function ($ville) {
/** @var Ville $ville */
return $ville->getSlug();
},
))
我在另一个使用Symfony 3.1的项目中有相同的代码,并且运行良好,问题出在Symfony的版本上吗?
编辑:
我已经对其进行了测试,choice_label
并且可以正常工作而没有任何错误:
'choice_label' => function ($ville) {
/** @var Ville $ville */
return $ville->getSlug();
},
编辑2:
今天,我已经安装了Symfony 3.1,并进行了测试,choice_value
并且得到了相同的错误,但是自几个月前以来安装的ancien Symfony3.1仍然没有错误。我认为Symfony上进行了一些更新,并导致错误,是否可能?
(从2.7版本开始),该choice_value
选项还用于将初始数据转换为字符串值,即,如果传递了闭包函数,那么您也将控制初始数据转换,如果是null
,则需要在调用以下代码之前对其进行检查$ville->getSlug()
:
'choice_value' => function (Ville $ville = null) {
return $ville ? $ville->getSlug() : '';
},
在这种情况下,typehint很好,您具有签名约束和IDE自动完成功能,但是您需要设置defaultnull
以避免null
初始数据的typehint异常。
我认为应该将其记录下来,因为开发人员期望(像其他人一样choice_*
)它'choices'
仅处理选项。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句