Symfony 2错误:在非对象上调用成员函数get()

霍恩·霍利(KhorneHoly)

我查找了一些解决方案,但都没有找到适合我的问题。

在一个控制器中,我创建另一个控制器的实例

//Controller1
$mailController = new MailController();
$mailController->newCommentMail($entity, $em);

在MailController中,我想生成一个URL并发送一封电子邮件

$url = $this->generateUrl('path', array('turnId' => $data->getPoi()->getId(), 'poiId' => $data->getPoi()->getTurn()->getId()));
$this->get('mailer')->send($mail);

这两行抛出以下错误:

Error: Call to a member function get() on a non-object

但是我的IDE认为这$this是控制器的实例。

生成类似Controller的实例是否存在问题,或者我在做什么错?

克莱门特·安德罗(Clement Andraud)

您可以将控制器定义为服务,然后在另一个控制器中获取它。

在您services.yml定义所需的控制器即服务中:

services:
    your_service_name:
        class: YourCompany\YourBundle\Controller\YourController

然后,在任何控制器中,您都可以通过容器获取此服务:

$yourController = $this->get('your_service_name');

在文档中有一些关于“控制器即服务”的有用信息

OP的注解

这个答案是完全正确的,我只想添加一些内容,所以这个答案可以100%罚款!

在将Controller更改为Service后,缺少服务容器,请在此参考此问题

要设置容器以及SF2的全部功能,您需要在service.yml中添加一行。

services:
    mail_controller:
        class: YourCompany\YourBundle\Controller\YourController
        calls:
            - [ setContainer, [ @service_container ]]

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Symfony:错误:在非对象上调用成员函数get()

在非对象上调用成员函数get()-Symfony和Silex

Symfony 2-错误:“在*行*的非对象上调用成员函数*

Symfony FOSRestBundle 错误:在 null 上调用成员函数 get()。[路由或配置错误]

错误:在数组 Symfony 3 上调用成员函数 contains()

Symfony 3.4 无法在测试中加载装置:错误:在 null 上调用成员函数 get()

Symfony登录表单—致命错误:在null上调用成员函数get()

在空“ Symfony Php”上调用成员函数get()

symfony 和棘轮在 null 上调用成员函数 get()

symfony2 createQueryBuilder将错误调用返回给成员函数

Symfony 2 错误:调用数组上的成员函数 andWhere()

在null,Symfony 4上调用成员函数encodePassword()

在字符串 symfony 3.4 上调用成员函数 format()

在symfony4中的null上调用成员函数setDp()

错误致命错误:在非对象上调用成员函数insert()

致命错误:在非对象错误上调用成员函数prepare()

致命错误:在非对象上调用成员函数isUploaded()

致命错误:在非对象上调用成员函数isVirtual()

致命错误:在非对象wordpress上调用成员函数delete()

致命错误:在非对象上调用成员函数query()

致命错误:在非对象上调用成员函数result()

致命错误:在非对象上调用成员函数executeQuery()

PHP:致命错误在非对象上调用成员函数format()

致命错误:在非对象上调用成员函数addSnippet()

在非对象上调用成员函数prepare()错误消息

致命错误:在PHP的非对象上调用成员函数query()

致命错误:在非对象上调用成员函数setAttribute()

CakePHP 致命错误:在非对象上调用成员函数 check()?

致命错误:在非对象上调用成员函数error()