gpt4 book ai didi

php - 交响乐 2 错误 : Call to a member function get() on a non-object

转载 作者:可可西里 更新时间:2023-11-01 01:01:20 24 4
gpt4 key购买 nike

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

在一个 Controller 中我创建另一个 Controller 的实例

//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 的一个实例。

生成这样的 Controller 实例是否有问题,或者我做错了什么?

最佳答案

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

在您的 services.yml 中将所需的 Controller 定义为服务:

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

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

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

有一些关于 Controllers as Services 的有用信息在文档中

OP 的注释

这个答案是完全正确的,我只是想添加一些东西,这样这个答案就可以 100% 正常工作!

在我将 Controller 更改为服务后,服务容器丢失,引用 this Question here .

要设置容器,并使用 SF2 的全部功能,您需要在 service.yml 中添加一行

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

关于php - 交响乐 2 错误 : Call to a member function get() on a non-object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24889961/

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