【发布时间】:2017-11-10 19:41:39
【问题描述】:
所以我已经完成了 Symfony 3 的新安装,尝试设置一些 API 路由,但我无法访问控制器内的容器。
我的控制器从具有ContainerAwareTrait 的基本 Symfony 控制器扩展而来,但是当我尝试执行 $this->container->get('service') 时,我收到了这个错误:
"message": "Call to a member function get() on null",
"class": "Component\\Debug\\Exception\\FatalThrowableError",
"trace": [{
"namespace": "",
"short_class": "",
"class": "",
"type": "",
"function": "",
"file": "src\\Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller.php",
"line": 50,
"args": []
}]
看起来 symfony 自己的控制器无法找到容器,是我遗漏了什么吗?
这是控制器的代码:
use FOS\RestBundle\Controller\Annotations\Get;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\JsonResponse;
class UsersController extends Controller
{
/**
* @Get()
*
* @return JsonResponse
*/
public function getUsersAction()
{
$users= $this->get('doctrine.orm.entity_manager')->getRepository('AppBundle:User')->findAll();
return new JsonResponse($users, 200):
}
}
【问题讨论】:
-
你是把控制器定义为服务还是使用标准的路由机制?
-
您是否尝试自己实例化控制器(例如
$controller = new MyController();)? -
请给我们看控制器代码。
-
编辑添加控制器的代码。我使用的是标准路由机制,我的控制器是从默认的 symfony 控制器扩展而来的。
-
嗯。而这一切你都在做什么?没有构造函数?没有尝试将控制器定义为服务?不尝试运行单元测试?或者也许是一个控制台命令?一切似乎都很神秘。
标签: php symfony symfony-3.3