我无法访问控制器中的容器

艾米·考斯(Emii Khaos)

我正在尝试在Symfony控制器中访问服务

$session = $this->get('session');

但是我得到了下一个错误:

PHP Fatal error: Call to a member function get() on a non-object

我认为Symfony2默认将控制器定义为服务。

注意:这个问题最初是由Dbugger提出的,但是他已经无缘无故删除了它。

艾米·考斯(Emii Khaos)

在控制器中使用容器

get()仅是Symfony基本Controller类提供的用于访问容器的快捷方式功能

您的控制器必须扩展此类才能使用此功能:

namespace Acme\ExampleBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class DefaultController extends Controller
{
    // your actions
}

如果您不想依赖此类(出于某些原因),可以扩展ContainerAware以注入容器并像在get()快捷方式中那样使用它

namespace Acme\ExampleBundle\Controller;
use Symfony\Component\DependencyInjection\ContainerAware;

class DefaultController extends ContainerAware
{
    public function exampleAction()
    {
        $myService = $this->container->get('my_service');

        // do something
    }
}

自己创建控制器

默认情况下,未将控制器定义为服务,您可以定义它们,但不需要获取容器。如果发出请求,则路由框架将确定需要调用的控制器。然后构造控制器,并通过该setContainer()方法注入容器

但是,如果您自己构造控制器(在测试或其他任何地方),则必须自行注入容器。

$controller = new DefaultController();
$controller->setContainer($container);
// $container comes trough DI or anything else.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法访问导航控制器的后退按钮

来自分类Dev

Angular Ui路由器无法访问我控制器内的$ stateParams

来自分类Dev

PHP MVC无法访问控制器

来自分类Dev

无法访问我的控制器/构造函数的输入

来自分类Dev

无法访问控制器方法

来自分类Dev

CodeIgniter控制器无法访问

来自分类Dev

Rails-无法访问控制器中的参数

来自分类Dev

控制器无法访问Angular Service变量

来自分类Dev

Spring Boot无法访问REST控制器

来自分类Dev

我无法访问控制器中的容器

来自分类Dev

无法访问父控制器作用域(AngularJS)

来自分类Dev

无法访问模型中的控制器变量

来自分类Dev

无法访问任何控制器,但Code Ignite中的默认控制器

来自分类Dev

无法访问AngularJS控制器内的表单

来自分类Dev

控制器无法访问子模型发布

来自分类Dev

Angular Ui路由器无法访问我的控制器内的$ stateParams

来自分类Dev

在控制器中无法访问Rails POST参数

来自分类Dev

无法在我的angularjs控制器中访问$ routeParams

来自分类Dev

无法访问控制器(Laravel)中的变量

来自分类Dev

Rails-无法访问控制器中的参数

来自分类Dev

无法访问指令控制器上的表单状态

来自分类Dev

控制器无法访问Angular Service变量

来自分类Dev

无法访问控制器中的服务

来自分类Dev

无法访问控制器响应的正确内容

来自分类Dev

无法访问控制器中的获取变量

来自分类Dev

如何将ajax中的字符串列表传递给控制器mvc。我无法访问控制器值

来自分类Dev

无法访问其他控制器的字段

来自分类Dev

无法访问 AngularJs 控制器内的代码

来自分类Dev

无法访问 angularjs 控制器中对象的属性,但能够从 HTML 访问它

Related 相关文章

热门标签

归档