Symfony 3.4 上的 getDoctrine() null
getDoctrine() null on Symfony 3.4
我在 symfony 3.4 项目中遇到错误。
我正在尝试管理应用程序菜单中通知的显示。
所以我创建了一个扩展 Controller 的 CustomController。
然后我让所有其他控制器都继承自 CustomController。
但是当我调用 getDoctrine() 访问存储库时,出现以下错误:
“调用成员函数 has() on null”
这是我的自定义控制器:
<?php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class CustomController extends Controller
{
public $data = [];
protected $em;
public function __construct()
{
$this->em = $this->getDoctrine()->getManager();
$countAttente = $this->em->getRepository('AppBundle:Commandes')->tailleEnAttente("En attente");
$this->data['countAttente'] = $countAttente;
}
}
我试图在 service.yml 中将控制器作为服务传递,但它没有改变任何东西
AppBundle\Controller\CustomController:
class: AppBundle\Controller\CustomController
arguments: ["@doctrine.orm.entity_manager"]
calls:
- [setContainer, ["@service_container"]]
我发现了很多关于此类错误的类似主题,但 none 允许我跳过此错误
欢迎任何帮助
直接在构造函数中自动装配 EntityManager:
use Doctrine\ORM\EntityManagerInterface;
private $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
或者,如果您需要一个特定的存储库,并且使用默认配置设置了自动装配,您也可以对存储库执行相同的操作:
private $repository;
public function __construct(CommandesRepository $repository)
{
$this->repository = $repository;
}
我在 symfony 3.4 项目中遇到错误。 我正在尝试管理应用程序菜单中通知的显示。 所以我创建了一个扩展 Controller 的 CustomController。
然后我让所有其他控制器都继承自 CustomController。
但是当我调用 getDoctrine() 访问存储库时,出现以下错误:
“调用成员函数 has() on null”
这是我的自定义控制器:
<?php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class CustomController extends Controller
{
public $data = [];
protected $em;
public function __construct()
{
$this->em = $this->getDoctrine()->getManager();
$countAttente = $this->em->getRepository('AppBundle:Commandes')->tailleEnAttente("En attente");
$this->data['countAttente'] = $countAttente;
}
}
我试图在 service.yml 中将控制器作为服务传递,但它没有改变任何东西
AppBundle\Controller\CustomController:
class: AppBundle\Controller\CustomController
arguments: ["@doctrine.orm.entity_manager"]
calls:
- [setContainer, ["@service_container"]]
我发现了很多关于此类错误的类似主题,但 none 允许我跳过此错误
欢迎任何帮助
直接在构造函数中自动装配 EntityManager:
use Doctrine\ORM\EntityManagerInterface;
private $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
或者,如果您需要一个特定的存储库,并且使用默认配置设置了自动装配,您也可以对存储库执行相同的操作:
private $repository;
public function __construct(CommandesRepository $repository)
{
$this->repository = $repository;
}