Zend Framework 3为HTML电子邮件渲染HTML



是否有任何方法可以在控制器中获取视图的HTML内容?我正在尝试从ZF3发送HTML电子邮件,但是,我找不到将HTML内容获取到控制器的任何方法。

我使用控制器渲染方法,

$ render = new phprenderer((;$ RENDER-> RENDER((;

但是,代码在上述代码和加载视图之后停止执行。我需要将HTML内容设置为电子邮件主体。

您只需要使用ViewRenderer服务即可。因此,只需将此服务传递给您的控制器,然后如果要渲染视图,请致电。

示例:我认为您的控制器名称为SendEmailController。因此,在Factory中,您需要检索ViewRenderer服务,然后将其传递给控制器

use ZendServiceManagerFactoryFactoryInterface;
use InteropContainerContainerInterface;
class SendEmailControllerFactory implements FactoryInterface
{
    public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
    {
        $viewRenderer = $container->get('ViewRenderer');
        $sendEmailController = new SendEmailController($viewRenderer);
        return $sendEmailController;
    }
}

和控制器中的代码

use ZendMvcConsoleControllerAbstractConsoleController;
use ZendViewModelViewModel;
use ZendViewRendererRendererInterface as RendererInterface;
class SendEmailController extends AbstractConsoleController
{
    protected $viewRenderer;
    /**
     * @param RendererInterface  $viewRenderer
     */
    public function __construct(RendererInterface $viewRenderer)
    {
        $this->viewRenderer = $viewRenderer;
    }
    public function exampleAction()
    {
        $view = new ViewModel();
        $view->setTemplate('path/to/template.phtml');
        $html = $this->getViewRenderer()->render($view);
        // @todo attach this $html to mail MimePart
    }
}

最新更新