[英]Can't inject EntityManager to constructor in some circumstances
我遇到一些奇怪的情況。 我已經定義了一項服務,並將其提供給EntityManager作為Controller構造函數的參數。 當我嘗試在其他構造函數中獲取服務(即構造函數)時,一切正常。 但是當我直接打開作為服務的構造函數時,我看到:
ContextErrorException: Catchable Fatal Error: Argument 1 passed to
Webrama\PbsTreeBundle\Controller\PbsTreeController::__construct() must be an instance
of Doctrine\ORM\EntityManager, none given, called in
C:\www\strefaurody\bb\app\cache\dev\classes.php on line 2374 and defined in
C:\www\strefaurody\bb\src\Webrama\PbsTreeBundle\Controller\PbsTreeController.php
line 16
我的services.yml看起來像這樣:
services:
pbs_tree_controller:
class: Webrama\PbsTreeBundle\Controller\PbsTreeController
arguments:
entityManager: "@doctrine.orm.entity_manager
構造函數也很簡單:
private $em;
public function __construct(EntityManager $entityManager)
{
$this->em = $entityManager;
}
奇怪的是我正在從服務中調用方法,該服務使用此方法成功地注入了構造函數EntityManager實例:
public function genratePbsTree()
{
$conn = $this->em->getConnection();
$sql = "SELECT id_child AS id, TRIM(TRAILING '/' FROM path) AS path FROM pbs_node_to_node WHERE depth = 2";
$stmt = $conn->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll();
return $result;
}
根據要求有一個路由YML:
webrama_pbs_index:
pattern: /{page}
defaults: { _controller: WebramaPbsTreeBundle:PbsTree:index, page: 1 }
requirements:
page: \d+
webrama_pbs_brand_edit:
pattern: /edit/{id}
defaults: { _controller: WebramaPbsTreeBundle:PbsTree:edit, id: '' }
requirements:
id: \d+
options:
expose: true
webrama_pbs_producer_add:
pattern: /add/producer
defaults: { _controller: WebramaPbsTreeBundle:PbsTree:addProducer }
webrama_pbs_series_add:
pattern: /add/series
defaults: { _controller: WebramaPbsTreeBundle:PbsTree:addSeries }
webrama_pbs_brand_add:
pattern: /add/brand
defaults: { _controller: WebramaPbsTreeBundle:PbsTree:addBrand }
您在路由配置中使用“控制器”符號:
_controller: WebramaPbsTreeBundle:PbsTree:index
如果要“控制器即服務”,則需要使用服務名稱:
_controller: pbs_tree_controller:indexAction
在此處閱讀更多信息: http : //symfony.com/doc/current/cookbook/controller/service.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.