Иван, спасибо! Я совсем забыл об EventListener!
Итак, моё решение.
В директории
VendorName/SiteBundle/EventListener создаём файл
AdminApplicationListener.php со следующим содержимым:
<?php
namespace VendorName\SiteBundle\EventListener;
class AdminApplicationListener
{
/**
*
* var Swift_Mailer
*/
private $__mailer = null;
private $__templating = null;
public function __construct(\Swift_Mailer $mailer, $templating)
{
$this->__mailer = $mailer;
$this->__templating = $templating;
}
public function onApplication( \Sonata\AdminBundle\Event\PersistenceEvent $event )
{
$ac = $event->getObject();
$message = \Swift_Message::newInstance()
->setContentType('text/html')
->setSubject('[VendorName] Изменение записи')
->setFrom('admin@VendorName.ru')
->setTo($ac->getEmail())
->setBody(
$this->__templating->render(
'VendorNameSiteBundle:Admin:email.html.twig',
array('name' => $ac->getFirstName())
)
)
;
$this->__mailer->send($message);
}
}
В файле
VendorName/SiteBundle/Resources/config/services.yml добавляем строки:
services:
vendor_name.admin.on_application:
class: VendorName\SiteBundle\EventListener\AdminApplicationListener
arguments:
mailer: @mailer
templating: @templating
tags:
- { name: kernel.event_listener, event: sonata.admin.event.persistence.post_update, method: onApplication }
После этого начинают отправляться письма с отрендеренным шаблоном.