我收到了一个错误
Fatal error: Call to a member function has() on a non-object in /labs/Projects/What2Do/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php on line 161
我不完全确定如何调试这个.错误发生在Symfony 2文件中,而不是我的...我的控制器如下所示.我在跑步indexAction
<?php
class ProjectsController extends Controller {
/**
* @var EntityManager
*/
protected $em;
public function __construct() {
$this->em = $this->getDoctrine()->getEntityManager();
}
/**
* @Route("/")
* @Route("/projects", name="listProjects")
* @Template()
*/
public function indexAction() {
$projects = $this->em->getRepository(Project::NAME)->findAll();
return array('projects' => $projects);
}
/**
* @Route("/projects/{projId}", name="viewProject")
* @Template()
*/
public function viewAction($projId) {
// retrieve project
$proj = $this->em->getRepository(Project::NAME)->findOneById($projId);
if …Run Code Online (Sandbox Code Playgroud) 我想使用以下代码将EntityManager实例传递给我的控制器的构造函数:
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Doctrine\ORM\EntityManager;
class UserController extends Controller
{
public function __construct( EntityManager $entityManager )
{
// do some stuff with the entityManager
}
}
Run Code Online (Sandbox Code Playgroud)
我通过将参数放入service.yml文件来进行构造函数注入:
parameters:
# parameter_name: value
services:
# service_name:
# class: AppBundle\Directory\ClassName
# arguments: ["@another_service_name", "plain_value", "%parameter_name%"]
app.user_controller:
class: AppBundle\Controller\UserController
arguments: ['@doctrine.orm.entity_manager']
Run Code Online (Sandbox Code Playgroud)
service.yml包含在config.yml中,当我运行时
php bin/console debug:container app.user_controller
我明白了:
Information for Service "app.user_controller"
=============================================
------------------ -------------------------------------
Option Value
------------------ -------------------------------------
Service ID app.user_controller
Class AppBundle\Controller\UserController
Tags -
Public yes
Synthetic no
Lazy no
Shared …Run Code Online (Sandbox Code Playgroud) 为什么会出现此错误?
可捕获的致命错误:传递给Application \ Sonata \ ProductBundle \ Controller \ ProductAdminController :: __ construct()的参数1必须是ContainerInterface的实例,给定appDevDebugProjectContainer的实例
这是我的services.yml:
services:
product_admin_controller:
class: Application\Sonata\ProductBundle\Controller\ProductAdminController
arguments: ["@service_container"]
tags:
- { name: doctrine.event_listener, event: postLoad, connection: default }
Run Code Online (Sandbox Code Playgroud)
而我的控制器:
class ProductAdminController extends Controller
{
protected $container;
public function __construct(\ContainerInterface $container)
{
$this->container = $container;
}
}
Run Code Online (Sandbox Code Playgroud)