gpt4 book ai didi

symfony - 来自 Symfony 2 Controller 的 "Call to a member function has() on a non-object"

转载 作者:行者123 更新时间:2023-12-04 10:27:54 25 4
gpt4 key购买 nike

我收到一个错误

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 文件中,不是我的……我的 Controller 如下所示。我正在运行 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);
}
}

最佳答案

Symfony 2 Controller 没有 __construct 方法,所以虽然调用父构造函数不是一个坏主意,但它不会有帮助。

问题是容器在 __construct 之后被注入(inject),因此试图在构造函数中获取您的学说实体管理器根本行不通。我知道这有点违反直觉,但让经理了解你的行动方法。

而且我假设您的 Project::NAME 类常量中包含类似“ProjectBundle:Project”的内容。

关于symfony - 来自 Symfony 2 Controller 的 "Call to a member function has() on a non-object",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10480299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com