我想为我的项目创建HelperController。我生成一个具有学说的控制器:生成:控制器,并且需要在其中使用实体管理器。
我被驱动到services.yml,但它给出了这样的错误:
Argument 1 passed to CampingBundleControllerHelperController::__construct() must be an instance of DoctrineORMEntityManager, none given ...
我的控制器代码:
namespace CampingBundleController;
use SymfonyBundleFrameworkBundleControllerController;
use SensioBundleFrameworkExtraBundleConfigurationRoute;
use DoctrineORMEntityManager;
class HelperController extends Controller
{
protected $manager;
public function __construct(EntityManager $manager)
{
$this->manager = $manager;
}
我的services.yml:
services:
camping.helper_controller:
class: CampingBundleControllerHelperController
arguments: ["@doctrine.orm.entity_manager"]
为什么它不起作用?Shoudl我清除了缓存或其他内容,或者定义上有什么问题?
谢谢
尝试使用EntityManagerInterface并删除extends Controller
。如果需要CAS(控制器作为服务(,请检查此链接。将protected $manager;
更改为private $manager;
namespace CampingBundleController;
use DoctrineORMEntityManagerInterface;
class HelperController
{
/**
* @var EntityManagerInterface $entityManager
*/
private $entityManager;
/**
* @param $entityManager
*/
public function __construct(EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
}
}
我将在这里留下两分钱,因为我有同样的问题,并通过将tags
添加到服务中。
something.validate.some_service:
class: PathToSomeValidator
arguments:
- '@doctrine.orm.entity_manager'
tags:
- { name: validator.constraint_validator, alias: some_validator_alias }
如何使用Symfony的服务标签