我正在尝试在Sonata-Admin中创建自定义表单,我想从数据库中获取数据到选择框。 当我试图通过getEntityManager()获取数据时,我收到了错误
No entity manager defined for class \Admin\AdminBundle\Entity\Category
我尝试将实体管理器添加到service.yml中的第一个参数[下面的代码]
services:
sonata.admin.category:
class: Admin\AdminBundle\Admin\Category
tags:
- {name: sonata.admin, manager_type: orm, group: "Content", label: "Kategoria"}
arguments:
- @doctrine.orm.default_entity_manager
- Admin\AdminBundle\Entity\Category
- ~
calls:
- [ setTranslationDomain, [AdminAdminBundle]]
添加默认实体管理器后,我遇到错误:
ContextErrorException in RoutesCache.php line 47:
Warning: md5() expects parameter 1 to be string, object given
我也在添加我的ConfigureFormFields()函数:
protected function configureFormFields(FormMapper $formMapper){
$em = $this->modelManager->getEntityManager('\Admin\AdminBundle\Entity\Category');
$query = $em->createQueryBuilder('c')
->select('c')
->from('AdminBundle:Category', 'c')
->where('c.parent IS NOT NULL')
->orderBy('c.root, c.lft', 'ASC');
$formMapper
->add ('name', 'text', array('label' => 'Nazwa Kategorii'))
->add ('alias', 'text', array('label' => 'Alias'))
->add('parent_id', 'sonata_type_model', array(
'required' => true,
'query' => $query
));
有人可以帮我解决这个错误吗? 谢谢你的回答,
最好的问候!答案 0 :(得分:1)
您收到错误,因为在错误的地方添加经理。 admin服务的第一个参数应设置为 管理服务的代码(默认为服务名称)。
Admin class解析此字符串并构建一些基于的逻辑。你把管理员放在那里就会出错。
如果你想在管理类中添加一些东西,你可以简单地添加第四个参数(或第五个,第六个....),如:
services:
sonata.admin.category:
class: Admin\AdminBundle\Admin\Category
tags:
- {name: sonata.admin, manager_type: orm, group: "Content", label: "Kategoria"}
arguments:
- ~
- Admin\AdminBundle\Entity\Category
- ~
- @doctrine.orm.default_entity_manager
calls:
- [ setTranslationDomain, [AdminAdminBundle]]
然后在您的管理类中,您必须更新覆盖构造函数,例如:
public function __construct($code, $class, $baseControllerName, $yourManager)
{
parent::_construct($code, $class, $baseControllerName);
$this->yourManager = $yourManager
}