自定义 Class 和 ContextErrorException 中没有实体管理器
No Entity Manager in Custom Class and ContextErrorException
我正在尝试在 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
));
有人可以帮我解决这个错误吗?
感谢您的回答,
此致!
您收到错误消息,因为在错误的位置添加了经理。
管理服务的第一个参数应设置为
管理服务的代码(默认为服务的名称)。
Admin class 解析此字符串并基于此构建一些逻辑。你把经理放在那里所以你会出错。
如果你想向你的管理员添加一些东西 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]]
然后在您的管理员中 class 您必须更新覆盖构造函数,例如:
public function __construct($code, $class, $baseControllerName, $yourManager)
{
parent::_construct($code, $class, $baseControllerName);
$this->yourManager = $yourManager
}
我正在尝试在 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
));
有人可以帮我解决这个错误吗? 感谢您的回答,
此致!
您收到错误消息,因为在错误的位置添加了经理。 管理服务的第一个参数应设置为 管理服务的代码(默认为服务的名称)。
Admin class 解析此字符串并基于此构建一些逻辑。你把经理放在那里所以你会出错。
如果你想向你的管理员添加一些东西 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]]
然后在您的管理员中 class 您必须更新覆盖构造函数,例如:
public function __construct($code, $class, $baseControllerName, $yourManager)
{
parent::_construct($code, $class, $baseControllerName);
$this->yourManager = $yourManager
}