簡體   English   中英

Symfony2服務無法找到模板

[英]Symfony2 service unable to find template

我剛剛通宵達旦地試圖使它正常工作,我可能缺少一些愚蠢的東西,但請幫幫我。

我有一個symfony2服務,可以發送電子郵件。 我已經將@templating服務注入到服務的構造函數中,如下所示:

services.yml

order_service:
    class: AppBundle\Services\OrderService
    arguments: [ "@doctrine.orm.entity_manager", "@mailer", "@templating" ]

OrderService.php

/**
 * @var EntityManager
 */
protected $em;

protected $twig;

protected $mailer;    

public function __construct(EntityManager $_entityManager, $_mailer, $_twig)
{
    $this->em = $_entityManager;
    $this->mailer = $_mailer;
    $this->twig = $_twig;
}

我的模板位於AppBundle/Resources/views/Emails 在我的服務中,更進一步的功能是嘗試發送電子郵件。

protected function send_emails($vendors, $order)
{
    $customer = $order->getCustInfo();

    // Send email(s) to customer
    foreach ($order->getVouchers() as $voucher)
    {
        $message = \Swift_Message::newInstance()
            ->setSubject('Voucher # ' . $voucher->getId())
            ->setFrom('from_address@foobar.com')
            ->setTo($customer->email)
            ->setBody($this->twig->render(
                'Emails/email-voucher.html.twig', [
                    'order'     =>  $order,
                    'voucher'   =>  $voucher,
                    'customer'  =>  $customer
                ]
            ), 'text/html');

        $this->mailer->send($message);
    }
}

我總是收到錯誤消息Unable to find template \\"Emails/email-voucher.html.twig\\".

因此,這是我嘗試過的內容的摘要:

  • 基本上所有關於類似StackOverflow問題的建議
  • 將模板移至app/Resources/views
  • 我可以在調用->render()想到的每條路徑/相對路徑
  • 拉我的頭發

有任何想法嗎?

即使您的服務位於與模板相同的名稱空間中,這也不意味着您可以像這樣直接調用它。 您是否嘗試過渲染常規控制器模板的方式,如下所示:

->setBody($this->twig->render(
            'AppBundle:Emails:email-voucher.html.twig', [
                'order'     =>  $order,
                'voucher'   =>  $voucher,
                'customer'  =>  $customer
            ]
        ), 'text/html');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM