在Helper类中获取EntityManager

时间:2017-03-20 16:44:58

标签: symfony symfony-2.1

我正在使用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);

    }
}
?>

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

<?php
namespace app\UsuariosBundle\Util;

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

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

| - |更新| - |

我已经根据Vincent T的说明更新了我的代码,我发现了这个错误:

“传递给app \ UsuariosBundle \ Service \ Util :: __ construct()的参数1必须是Doctrine \ ORM \ EntityManager的实例,没有给出,”

应用程序/配置/ services.yml

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

的src / UsuariosBundle /服务/ 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');
    }
}
?>

1 个答案:

答案 0 :(得分:2)

按照文档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"]

助手类

<?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');
    }
}
?>

控制器类

<?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);

    }
}
?>