【发布时间】:2018-07-21 17:07:04
【问题描述】:
我想为我的项目创建 HelperController。我生成了一个带有教义的控制器:generate:controller,我需要在其中使用实体管理器。
我注入到 services.yml 但它给出了这样的错误:
Argument 1 passed to CampingBundle\Controller\HelperController::__construct() must be an instance of Doctrine\ORM\EntityManager, none given ...
我的控制器代码:
namespace CampingBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Doctrine\ORM\EntityManager;
class HelperController extends Controller
{
protected $manager;
public function __construct(EntityManager $manager)
{
$this->manager = $manager;
}
我的服务.yml:
services:
camping.helper_controller:
class: CampingBundle\Controller\HelperController
arguments: ["@doctrine.orm.entity_manager"]
为什么它不起作用?我应该清除缓存或其他东西,还是定义有什么问题?
谢谢
【问题讨论】:
-
由于您配置路线的方式,它不起作用。您需要稍作调整来告诉控制器解析器从容器中拉出控制器而不是新建它。 symfony.com/doc/current/controller/… 不过我有点怀疑你的控制器名称。希望您的 HelperController 不是为了帮助其他控制器。
-
如果你有学说包安装程序,1:你的经理可以通过调用 $this->getDoctrine()... 2-当你扩展基本控制器时,你可以访问 $container,所以你可以注册一个服务来处理你的经理初始化并访问它
标签: symfony doctrine entitymanager symfony-3.3 symfony3.x