[英]How to instance doctrine entity manager in a symfony2 class
我是Symfony 2和Doctrine的新手。
我在symfony項目上創建了一個新類,該類位於:
project_folder/src/Libraries/Validarcontenido/Validarcontenido.php
我需要在此類中獲取Doctrine Entity Manager實例。
我已經閱讀了有關它的文檔,每個人都說我必須將該類添加到services.yml文件中,但是沒有用。
這是我的代碼:
<?php
namespace Libraries\Validarcontenido;
use AdminBundle\Entity\Aportes;
use Doctrine\ORM\EntityManager;
use Symfony\Component\HttpFoundation\Request;
class Validarcontenido
{
private $request, $post, $em;
public function __construct()
{
$this->request = Request::createFromGlobals();
$this->post = $this->request->request->all();
// gets doctrine instance
$this->em = $this->getContainer()->get('doctrine');
}
}
和services.yml :
# Learn more about services, parameters and containers at
# http://symfony.com/doc/current/book/service_container.html
parameters:
# parameter_name: value
services:
validarcontenido.service:
class: Libraries\Validarcontenido\Validarcontenido
arguments: [@doctrine.orm.entity_manager]
但是Symfony向我返回此錯誤消息:
Attempted to call an undefined method named "getContainer" of class "Libraries\Validarcontenido\Validarcontenido".
500 Internal Server Error - UndefinedMethodException
我做錯了什么? 非常感謝。
您必須使用構造函數來設置實體管理器:
class Validarcontenido
{
private $request, $post, $em;
public function __construct(EntityManager $em)
{
$this->request = Request::createFromGlobals();
$this->post = $this->request->request->all();
$this->em = $em;
}
}
您需要像以前一樣在service.yml中將類作為服務創建,只有差不多了。
您需要按以下方式更改課程:
<?php
namespace Libraries\Validarcontenido;
use AdminBundle\Entity\Aportes;
use Doctrine\ORM\EntityManager;
use Symfony\Component\HttpFoundation\Request;
class Validarcontenido
{
private $request, $post, $em;
public function __construct(EntityManager $em)
{
$this->request = Request::createFromGlobals();
$this->post = $this->request->request->all();
// gets doctrine instance
$this->em = $em;
}
}
這是一個工作示例(提供了容器): https : //codedump.io/share/tpxgpEMJnaiW
好的,問題是當我在控制器中創建服務實例時,我使用了以下方法:
$my_class = new My_class();
現在我知道我必須使用這個:
$my_class = $this->get('service_name');
非常感謝!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.