我在 symfony 3.4 專案上有錯誤。我正在嘗試管理應用程式選單中通知的顯示。所以我創建了一個擴展控制器的 CustomController。
然后我讓所有其他控制器都繼承自 CustomController。
但是當我呼叫 getDoctrine() 以訪問存盤庫時,我收到以下錯誤:
“呼叫成員函式 has() 為空”
這是我的自定義控制器:
<?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"]]
我在此類錯誤上發現了許多類似的主題,但沒有一個主題允許我跳過此錯誤
歡迎任何幫助
uj5u.com熱心網友回復:
直接在建構式中自動裝配 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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/343630.html
