我正在尝试将我的应用程序升级到 symfony 3。但是有一个我无法修复的弃用通知:
我的 Symfony 2 代码:
protected function configureFormFields(FormMapper $formMapper){
->add('town', 'sonata_type_model_autocomplete', array(
'property'=>'name',
'placeholder'=>'Select one',
'label'=>'town.name,
));
}
弃用通知:
从 2.8 版开始,不推荐通过字符串名称访问类型“sonata_type_model_autocomplete”,并将在 3.0 中删除。改用完全限定的类型类名称“Sonata\AdminBundle\Form\Type\ModelAutocompleteType”
因此,要与 Symfony 3 兼容:
use Sonata\AdminBundle\Form\Type\ModelAutocompleteType;
protected function configureFormFields(FormMapper $formMapper){
->add('town', ModelAutocompleteType::class , array(
'property'=>'name',
'placeholder'=>'Select one',
'label'=>'town.name',
'model_manager'=> null
));
}
但我得到这个错误:
可捕获的致命错误:传递给 Sonata\AdminBundle\Form\DataTransformer\ModelToIdPropertyTransformer::__construct() 的参数 1 必须实现接口 Sonata\AdminBundle\Model\ModelManagerInterface,给定 null,在 /vendor/sonata-project/admin-bundle/Form 中调用/Type/ModelAutocompleteType.php 在第 37 行并定义
因此,我必须传递一个 ModelManagerInterface 对象,而不是 null,但我在哪里可以找到它?
感谢您阅读