在简单的bundle类中使用容器不能在Symfony 2中工作

时间:2015-05-21 08:43:10

标签: php symfony dependency-injection symfony-2.3

我的错误:

  

ContextErrorException:Catchable Fatal Error:传递给的参数1   Agc \ ManagerBundle \ Lib \ grafica :: __ construct()必须实现接口   Symfony \ Component \ DependencyInjection \ ContainerInterface,没有给出,   呼唤   C:\瓦帕\ WWW \伽利略\ SRC \ AGC \ BackendBundle \控制器\ DefaultController.php   在第20行并在中定义   C:\ wamp \ www \ galileo \ src \ Agc \ ManagerBundle \ Lib \ grafica.php第10行

我的班级grafica:

<?php
namespace Agc\ManagerBundle\Lib;

use Symfony\Component\DependencyInjection\ContainerInterface;
/**
 * @Route(service="srv_grafica")
 */
class grafica
{
    private $container, $conn, $bdnmgi;

    public function __construct(ContainerInterface $container)
    {
        $this->container = $container;
        $this->conn = $this->getConn();
        $this->bdnmgi = $this->getBd();
    }

    public function getConn(){
        return $this->container->get('database_connection');
    }
    public function getBd(){
        return $this->container->get('security.context')->getToken()->getUser()->getAdministracion()->getNombreEsquemamgi();
    }

\ ManagerBundle \资源\配置\ services.yml

services:
    srv_grafica:
        class: Agc\ManagerBundle\Lib\grafica
        arguments:
            - '@service_container'

我的DefaultController:

class DefaultController extends Controller
{
    public function dashboardAction(Request $peticion)
    {
        $em = $this->getDoctrine()->getManager('customer_1');
        $user= $this->get('security.context')->getToken()->getUser();
        $esquema = $user->getAdministracion()->getNombreEsquemamgi();
        var_dump($esquema);
        $grafica = new grafica();

2 个答案:

答案 0 :(得分:0)

您需要将容器传递给您的服务,在一个示例下面如何在您的services.yml中执行此操作

services:

    srv_grafica:
        class: Agc\ManagerBundle\Lib\grafica
        arguments:
            - '@service_container'

答案 1 :(得分:0)

那是错的:

$grafica = new grafica();

应该是:

$grafica = $this->get('srv_grafica');