我正在使用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');
}
}
?>
答案 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);
}
}
?>