我收到错误
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 ($proj == null)
throw $this->createNotFoundException ('Invalid project');
return array('proj' => $proj);
}
}
答案 0 :(得分:13)
Symfony 2控制器没有__construct方法,所以在调用父构造函数时不是一个坏主意,它不会有帮助。
问题是容器在__construct之后被注入,所以试图在构造函数中获取你的教义实体管理器根本不起作用。我知道这有点反直觉,但在你的行动方法中得到经理。
我假设您的Project :: NAME类常量中包含类似'ProjectBundle:Project'的内容。