• Symfony2 / SonataAdminBundle / Как отправить email базирующегося на шаблоне после редактирования записи?

    @Zeboton Автор вопроса
    Иван, спасибо! Я совсем забыл об 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 }


    После этого начинают отправляться письма с отрендеренным шаблоном.
    Ответ написан