Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony ContextErrorException:可捕获致命错误:传递给_construct()的参数1必须是Doctrine\ORM\EntityManager的实例,未给出任何实例_Symfony_Dependency Injection - Fatal编程技术网

Symfony ContextErrorException:可捕获致命错误:传递给_construct()的参数1必须是Doctrine\ORM\EntityManager的实例,未给出任何实例

Symfony ContextErrorException:可捕获致命错误:传递给_construct()的参数1必须是Doctrine\ORM\EntityManager的实例,未给出任何实例,symfony,dependency-injection,Symfony,Dependency Injection,我在自定义类中插入条令服务时遇到了一个问题。 我正在使用symfony 2.3。我已经尽了全力,但仍然无法找到问题所在和缺失之处。 以下是我的代码: config.yml imports: - { resource: parameters.yml } - { resource: security.yml } - { resource: "@ClCommonBundle/Resources/config/services.yml" } namespace Cl\AdminBun

我在自定义类中插入条令服务时遇到了一个问题。 我正在使用symfony 2.3。我已经尽了全力,但仍然无法找到问题所在和缺失之处。 以下是我的代码:

config.yml

imports:
   - { resource: parameters.yml }
   - { resource: security.yml }
   - { resource: "@ClCommonBundle/Resources/config/services.yml" }
namespace Cl\AdminBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Cl\CommonBundle\Form\CityType;
use Cl\CommonBundle\Entity\City;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
use Cl\CommonBundle\Helpers\pager;

class CityController extends Controller {

    public function listAction(Request $request, $trigger = "next", $page = 1, $country, $cityname, $isactive) {

        $pager = new pager();

    }

}?>
服务。yml:

parameters: 
    cl.pager.class: Cl\CommonBundle\Helpers\Pager

services:
    cl.pager:
      class: cl\CommonBundle\Helpers\Pager
      arguments: ["@doctrine.orm.entity_manager"]
<?php

namespace Cl\CommonBundle\Helpers;

use Cl\CommonBundle\Helpers\pagerInterface;
use Doctrine\ORM\EntityManager;

/**
 * Description of pagination
 */
class pager implements pagerInterface {

    protected $em;

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

    public function getTotalRows($params) {
        return $this->em->getRepository($params['repository'])->getActiveRowsCount($params);
    }

}?>
namespace Cl\AdminBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Cl\CommonBundle\Form\CityType;
use Cl\CommonBundle\Entity\City;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
use Cl\CommonBundle\Helpers\pager;

class CityController extends Controller {

    public function listAction(Request $request, $trigger = "next", $page = 1, $country, $cityname, $isactive) {

        $pager = new pager();

    }

}?>
pagerinterface.php

<?php

namespace Cl\CommonBundle\Helpers;

interface pagerInterface {

    public function getTotalRows($params);
}?>
namespace Cl\AdminBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Cl\CommonBundle\Form\CityType;
use Cl\CommonBundle\Entity\City;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
use Cl\CommonBundle\Helpers\pager;

class CityController extends Controller {

    public function listAction(Request $request, $trigger = "next", $page = 1, $country, $cityname, $isactive) {

        $pager = new pager();

    }

}?>
错误

namespace Cl\AdminBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Cl\CommonBundle\Form\CityType;
use Cl\CommonBundle\Entity\City;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
use Cl\CommonBundle\Helpers\pager;

class CityController extends Controller {

    public function listAction(Request $request, $trigger = "next", $page = 1, $country, $cityname, $isactive) {

        $pager = new pager();

    }

}?>
Whoops, looks like something went wrong.
1/1 ContextErrorException: Catchable Fatal Error: Argument 1 passed to Cl\CommonBundle\Helpers\pager::__construct() must be an instance of Doctrine\ORM\EntityManager, none given, called in /opt/lampp/htdocs/Cl/src/Cl/AdminBundle/Controller/CityController.php on line 117 and defined in /opt/lampp/htdocs/Cl/src/Cl/CommonBundle/Helpers/pager.php line 17

in /opt/lampp/htdocs/Cl/src/Cl/CommonBundle/Helpers/pager.php line 17
at ErrorHandler->handle('4096', 'Argument 1 passed to Cl\CommonBundle\Helpers\pager::__construct() must be an instance of Doctrine\ORM\EntityManager, none given, called in /opt/lampp/htdocs/Cl/src/Cl/AdminBundle/Controller/CityController.php on line 117 and defined', '/opt/lampp/htdocs/Cl/src/Cl/CommonBundle/Helpers/pager.php', '17', array()) in /opt/lampp/htdocs/Cl/src/Cl/CommonBundle/Helpers/pager.php line 17
at pager->__construct() in /opt/lampp/htdocs/Cl/src/Cl/AdminBundle/Controller/CityController.php line 117
at CityController->listAction(object(Request), 'next', '4', 'all', 'all', 'all')
at call_user_func_array(array(object(CityController), 'listAction'), array(object(Request), 'next', '4', 'all', 'all', 'all')) in /opt/lampp/htdocs/Cl/app/bootstrap.php.cache line 2889
at HttpKernel->handleRaw(object(Request), '1') in /opt/lampp/htdocs/Cl/app/bootstrap.php.cache line 2863
at HttpKernel->handle(object(Request), '1', true) in /opt/lampp/htdocs/Cl/app/bootstrap.php.cache line 2992
at ContainerAwareHttpKernel->handle(object(Request), '1', true) in /opt/lampp/htdocs/Cl/app/bootstrap.php.cache line 2272
at Kernel->handle(object(Request)) in /opt/lampp/htdocs/Cl/web/app_dev.php line 29


Stack Trace

in /opt/lampp/htdocs/Cl/vendor/symfony/symfony/src/Symfony/Component/Debug/ErrorHandler.php at line 162  -
                        }
                    });
                    throw new DummyException();
                }
            }
at ErrorHandler ->handle ('4096', 'Argument 1 passed to Cl\CommonBundle\Helpers\pager::__construct() must be an instance of Doctrine\ORM\EntityManager, none given, called in /opt/lampp/htdocs/Cl/src/Cl/AdminBundle/Controller/CityController.php on line 117 and defined', '/opt/lampp/htdocs/Cl/src/Cl/CommonBundle/Helpers/pager.php', '17', array())
in /opt/lampp/htdocs/Cl/src/Cl/CommonBundle/Helpers/pager.php at line 17  +
at pager ->__construct ()
in /opt/lampp/htdocs/Cl/src/Cl/AdminBundle/Controller/CityController.php at line 117  +
at CityController ->listAction (object(Request), 'next', '4', 'all', 'all', 'all')
at call_user_func_array (array(object(CityController), 'listAction'), array(object(Request), 'next', '4', 'all', 'all', 'all'))
in kernel.root_dir/bootstrap.php.cache at line 2889  +
at HttpKernel ->handleRaw (object(Request), '1')
in kernel.root_dir/bootstrap.php.cache at line 2863  +
at HttpKernel ->handle (object(Request), '1', true)
in kernel.root_dir/bootstrap.php.cache at line 2992  +
at ContainerAwareHttpKernel ->handle (object(Request), '1', true)
in kernel.root_dir/bootstrap.php.cache at line 2272  +
at Kernel ->handle (object(Request))
in /opt/lampp/htdocs/Cl/web/app_dev.php at line 29  +

Logs  - 1 error

DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest".
DEBUG - Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest".
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\FragmentListener::onKernelRequest".
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest".
INFO - Matched route "_admin_city_list" (parameters: "_controller": "Cl\AdminBundle\Controller\CityController::listAction", "trigger": "next", "page": "4", "country": "all", "cityname": "all", "isactive": "all", "_route": "_admin_city_list")
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest".
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\Security\Http\Firewall::onKernelRequest".
DEBUG - Read SecurityContext from the session
DEBUG - Notified event "kernel.request" to listener "Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest".
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ErrorsLoggerListener::injectLogger".
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ErrorsLoggerListener::injectLogger".
DEBUG - Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController".
DEBUG - Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController".
DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController".
DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController".
DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController".
DEBUG - Notified event "kernel.exception" to listener "Symfony\Component\Security\Http\Firewall\ExceptionListener::onKernelException".
DEBUG - Notified event "kernel.exception" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelException".
DEBUG - Notified event "kernel.exception" to listener "Symfony\Component\HttpKernel\EventListener\ExceptionListener::onKernelException".
CRITICAL - Uncaught PHP Exception Symfony\Component\Debug\Exception\DummyException: "" at /opt/lampp/htdocs/Cl/vendor/symfony/symfony/src/Symfony/Component/Debug/ErrorHandler.php line 162
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest".
DEBUG - Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest".
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\FragmentListener::onKernelRequest".
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest".
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest".
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\Security\Http\Firewall::onKernelRequest".
DEBUG - Notified event "kernel.request" to listener "Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest".
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ErrorsLoggerListener::injectLogger".
DEBUG - Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ErrorsLoggerListener::injectLogger".
DEBUG - Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController".
DEBUG - Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController".
DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController".
DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController".
DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController".

在控制器中,替换
$pager=new pager()使用
$pager=$this->get('cl.pager')

这将调用
服务容器
来加载您的服务,并将
objectManager
注入构造函数

您必须从容器中获取服务,而不是通过创建新实例

namespace Cl\AdminBundle\Controller;

    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Cl\CommonBundle\Form\CityType;
    use Cl\CommonBundle\Entity\City;
    use Symfony\Component\HttpFoundation\Request;
    use Symfony\Component\HttpFoundation\JsonResponse;
    use Cl\CommonBundle\Helpers\pager;

    class CityController extends Controller {

        public function listAction(Request $request, $trigger = "next", $page = 1, $country, $cityname, $isactive) {

            $pager = $this->get('cl.pager'); //

        }

    }?>

问题在于您实例化和调用寻呼机助手的方式:

$pager = new pager();
您必须让容器创建寻呼机助手的一个实例,您必须创建一个扩展:

然后,您可以在控制器中调用您的助手,如下所示:

$this->get('cl.pager');

删除第三个导入表单config.yml让DI完成他的工作。好的,让我检查删除删除后没有区别。有三个人给了你正确的答案,你拒绝了他们。这可能是一种模式。new pager()与服务容器没有关系。这根本行不通。接受它,继续前进。塞拉德,我只是问我的困惑。我也很感激他们。我不知道你们为什么要批评我的评论,你们之前也有过同样的评论。谢谢ahmed,但这是在外部类中调用容器的一种方式。但symfony 2.3也提供了通过外部类中的构造函数调用entitymanager对象的方法。有很多网站提供相同的选择,但我没有成功。那么你能解释一下我该如何实现它吗。我试过了,我不明白你的问题。您必须让容器实例化寻呼机助手,然后必须从Sf容器调用此实例。基于您共享的代码,您试图创建一个新的寻呼机实例,但没有提供原则依赖,这是错误的。这里的要点是让我们知道您是否想将寻呼机助手定义为服务。谢谢Jamek,同样的评论和问题也会问Jamek您,这是在外部类中调用容器的一种方法。但symfony 2.3也提供了通过外部类中的构造函数调用entitymanager对象的方法。有很多网站提供相同的选择,但我没有成功。那么你能解释一下我该如何实现它吗。我试过洛特汉克斯·托马斯兹,我也向贾梅克和艾哈迈德问过同样的问题,所以请不要感到无聊,我需要澄清和解决方法来实施。这是在外部类中调用容器的一种方法。但symfony 2.3也提供了通过外部类中的构造函数调用entitymanager对象的方法。有很多网站提供相同的选择,但我没有成功。那么你能解释一下我该如何实现它吗。我试过了对不起,我不确定我是否理解你。问题是,当您将类定义为服务时,您需要将其用作服务。使用
new
关键字提示类不是有效的方法。Symfony2使用服务容器来处理实例化服务,您应该询问您的答案,但我的意思是这是一个服务,但如果我想在同一个类中调用多个服务,该怎么办。您可以将多个服务作为参数传递给其他服务的构造函数,例如,您的寻呼机可以采用objectManager和session,为此,只需扩展
参数
列表:
参数:[“@doctrine.orm.entity_manager”,“@session”]