相关疑难解决方法(0)

'在非对象上调用成员函数get()'?

使用symfony2.我有一个侦听器类,试图从不同的类(控制器)调用一个方法,如下所示:

        $authenticate = new AuthenticationController();
        $authenticate->isTokenValid($token);
Run Code Online (Sandbox Code Playgroud)

而控制器是toTokenValid方法:

public function isTokenValid($token) {

    $conn = $this->get('database_connection');
Run Code Online (Sandbox Code Playgroud)

抛出错误

Fatal error: Call to a member function get() on a non-object in /home/content/24/9254124/html/newsite/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php on line 246
Run Code Online (Sandbox Code Playgroud)

如果我以正确的方式加载控制器方法(使用URL中的路由)它工作正常.

php symfony

5
推荐指数
1
解决办法
9264
查看次数

Symfony 2:如何在控制器或服务外部呈现模板?

如何在控制器或服务外部渲染模板?

我一直在关注Symfony2的文档.文件

namespace Acme\HelloBundle\Newsletter;

use Symfony\Component\Templating\EngineInterface;

class NewsletterManager
{
    protected $mailer;

    protected $templating;

    public function __construct(
        \Swift_Mailer $mailer,
        EngineInterface $templating
    ) {
        $this->mailer = $mailer;
        $this->templating = $templating;
    }

    // ...
}
Run Code Online (Sandbox Code Playgroud)

这就是我打电话给我的帮手:

$transport = \Swift_MailTransport::newInstance();
$mailer = \Swift_Mailer::newInstance($transport);
$helper = new MailHelper($mailer);
$helper->sendEmail($from, $to, $subject, $path_to_twig, $arr_to_twig);
Run Code Online (Sandbox Code Playgroud)

所以这里缺少的第一件事是构造方法的第二个参数:

$helper = new MailHelper($mailer);
Run Code Online (Sandbox Code Playgroud)

但是我如何实例化EngineInterface?

当然不能是:

new EngineInterface();
Run Code Online (Sandbox Code Playgroud)

我完全迷失在这里.

我需要做的就是为正在发送的电子邮件呈现模板.

symfony

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

symfony ×2

php ×1