【发布时间】:2014-03-27 04:10:00
【问题描述】:
我使用简化的控制器并且没有服务容器。我正在尝试将教义注入服务中。这是错误:
ContextErrorException: Catchable Fatal Error: Argument 1 passed to Acme\Controller\WebController::__construct() must be an instance of Doctrine\ORM\EntityManager, none given, called in /home/hcs/Core/app/cache/dev/appDevDebugProjectContainer.php on line 3036 and defined in /home/hcs/Core/src/Acme/Controller/WebController.php line 28
这是我的服务定义:
doctrine:
dbal:
driver: %database_driver%
host: %database_host%
port: %database_port%
dbname: %database_name%
user: %database_user%
password: %database_password%
charset: UTF8
orm:
mappings:
Acme:
type: annotation
dir: %kernel.root_dir%/../src/Acme/Model
prefix: Acme\Model
alias: Model
is_bundle: false
services:
WebController:
class: Acme\Controller\WebController
arguments: [@doctrine.orm.entity_manager ]
parent: elnur.controller.abstract
还有我的班级
use Doctrine\ORM\EntityManager;
/**
* @Service("WebController", parent="elnur.controller.abstract")
*/
class WebController extends AbstractController
{
protected $em;
public function __construct(EntityManager $em)
{
$this->em = $em;
}
这里是 SF2 容器的输出 (php app/console container:debug | grep -i entity)
doctrine.orm.default_entity_manager container EntityManager5330e85ad5afb_546a8d27f194334ee012bfe64f629947b07e4919\__CG__\Doctrine\ORM\EntityManager
doctrine.orm.entity_manager n/a alias for doctrine.orm.default_entity_manager
doctrine.orm.validator.unique container Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntityValidator
form.type.entity container Symfony\Bridge\Doctrine\Form\Type\EntityType
translator container Symfony\Component\Translation\IdentityTranslator
我也尝试了服务定义中的参数:[“@doctrine.orm.entity_manager”],但仍然没有。我试过清理我的缓存,但我一辈子都无法注入 EM。我做错了什么?
【问题讨论】:
-
您在哪里以及如何调用此服务?
["@doctrine.orm.entity_manager"]应该适用于争论。 -
我在 config.yml 中定义我的服务,并将上述内容作为参数提供。但我在施工时收到上述错误。
-
你是如何构建它的?在控制器中使用:
$WebController = $this->get('WebController');或者你只是在做$WebController = new WebController()? -
服务是一个控制器。每当从请求中查询时都会加载它
标签: php symfony doctrine-orm doctrine