我使用symfony控制器作为服务 . 但是当我在控制器中调用doctrine manager时,它会给出错误FatalErrorException:错误:在非对象上调用成员函数has() .
这是我的控制器:
namespace Acme\StoreBundle\Controller;
use Doctrine\ORM\EntityManager;
class ServiceController extends Controller {
/**
*
* @var EntityManager
*/
protected $em;
public function __construct(EntityManager $em)
{
$this->em = $em;
}
}
和我的services.yml是这样的:
服务:
service_controller:
class: Acme\StoreBundle\Controller\ServiceController
arguments: ["@doctrine.orm.entity_manager"]
我在DbController的另一个控制器中调用实体管理器:
<?php
public function users()
{
$query = $this->em->createQuery('select u from AcmeStoreBundle:User u');
$user = $query->getResult();
}
3 回答
您可以在ServiceController中获取EntityManager,如:
所以以下代码没有意义:
我真的想看看你的DbController代码,你能表明吗?
我的DbController就像:
您还可以使用per-execute方法,如下所示:
1]为预执行方法创建新的侦听器类
2]在配置文件app / config / config.yml中配置监听器
3]控制器文件
4]你的功能
我通过尝试很多东西解决了这个问题 . 以下是此解决方案:
你必须使用你的控制器作为服务 . 我使用TagClass控制器作为服务 . 这是我的控制器代码:
要使用它,您必须在services.yml中将控制器定义为服务,如下所示:
你可以在TagClass中调用任何方法,如下所示: