在 Helper Class 中获取 EntityManager

Get EntityManager in Helper Class

我正在使用 Symfony 2.1,我有这个控制器:

<?php

namespace app\UsuariosBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;

use app\UsuariosBundle\Entity\Usuarios;
use app\ClientesBundle\Entity\Clientes;

use app\UsuariosBundle\Util\Util;

class DefaultController extends Controller
{

    //Some functions

    public function conexionAction(Request $request){
        $util=new Util();
        $sesion=$util->compruebaSesion(1,1,1);

    }
}
?>

这是我的助手class,他的文件夹在UsuariosBundle\Util\Util。php

<?php
namespace app\UsuariosBundle\Util;

class Util
{   
    public function compruebaSesion($tipo,$idUsuario,$login){
        //Here I need the entity manager
    }
}
?>

我需要实体管理器在应用程序的任何地方使用 util class 在数据库中进行一些更新,但我不知道如何从控制器中获取实体管理器。

|-|更新|-|

我已经按照 Vincent T 的说明更新了我的代码,但我遇到了这个错误:

"Argument 1 passed to app\UsuariosBundle\Service\Util::__construct() must be an instance of Doctrine\ORM\EntityManager, none given, "

app/config/services.yml

services:
    util:
        class:        app\UsuariosBundle\Service\Util
        arguments:    ["@doctrine.orm.entity_manager"]

src/UsuariosBundle/Service/Util.php

<?php
namespace app\UsuariosBundle\Util;

use Doctrine\ORM\EntityManager;

class Util
{   
    protected $em;

    public function __construct(EntityManager $em)
    {
      $this->em = $em;
    }

    public function compruebaSesion($tipo,$idUsuario,$login){
        $query= $this->em->createQuery('some query');
    }
}
?>

按照文档中的描述创建服务 sf docs services 然后您可以将其作为基本服务注入或在控制器中使用 $this->get('name_of_helper_service') 获取它。

# app/config/services.yml
services:
   app.service.util:
       class:        app\UsuariosBundle\Service\UtilService
       arguments:    ["@doctrine.orm.entity_manager"]

帮手class

<?php
namespace app\UsuariosBundle\Util;

use Doctrine\ORM\EntityManager;

class Util
{   
    /**
     * @Var EntityManager
     */
    protected $em;

    public function __construct(EntityManager $em)
    {
      $this->em = $em;
    }

    public function compruebaSesion($tipo,$idUsuario,$login){
        $query= $this->em->createQuery('some query');
    }
}
?>

控制器class

<?php

namespace app\UsuariosBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;

use app\UsuariosBundle\Entity\Usuarios;
use app\ClientesBundle\Entity\Clientes;

use app\UsuariosBundle\Util\Util;

class DefaultController extends Controller
{

    //Some functions

    public function conexionAction(Request $request){
        $util= $this->get('app.service.util'); 
        $sesion=$util->compruebaSesion(1,1,1);

    }
}
?>