我试图在我的Symfony Sonata bundle中创建一个服务,以便在订单创建后立即向特定的人发送电子邮件。接收电子邮件的人是用户选择批准订单的人。
我试图遵循Symfony网站上服务容器文档,但对我来说感觉不够完整。我想看到一个完整的示例,而不仅仅是一些片段。
这是我迄今为止的电子邮件服务类;
<?php
namespace Qi\Bss\BaseBundle\Lib\PurchaseModule;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Authorization\AuthorizationChecker;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
use Doctrine\ORM\EntityManager;
/**
*
*/
class Notifier
{
/**
* Service container
* @var type
*/
private $serviceContainer;
public function notifier($subject, $from, $to, $body) {
$message = \Swift_Message::newInstance()
->setSubject($subject)
->setFrom($from)
->setTo($to)
->setBody($body)
;
$this->serviceContainer->get('mailer')->send($message);
}
/**
* Sets the sales order exporter object
* @param type $serviceContainer
*/
public function setServiceContainer($serviceContainer)
{
$this->serviceContainer = $serviceContainer;
}
}
我的services.yml文件中的服务如下所示:
bss.pmod.order_notifier:
class: Qi\Bss\BaseBundle\Lib\PurchaseModule\Notifier
arguments: ["@mailer"]
当我在控制器操作中调用服务时,我使用这行代码;
$this->get('bss.pmod.order_notifier')->notifier();
我遇到的错误是;
注意:未定义属性: Qi\Bss\FrontendBundle\Controller\PmodOrderController::$serviceContainer
就像我之前所说的,我已经查看了服务容器文档,但我无法理解它。
有人可以帮我提供一个详细的示例来解释一切吗?
@templating
,以便能够发送HTML
电子邮件。 - Kamil Adryjanek