简体   繁体   English

Zend Framework 3为HTML电子邮件呈现HTML

[英]Zend Framework 3 Rendering HTML For HTML Email

Is there any method for getting html content of a view in a controller? 有没有什么方法可以在控制器中获取视图的html内容? I am trying to send html email from ZF3,however, I have not find any method for fetching html content to controller. 我正在尝试从ZF3发送html电子邮件,但是我没有找到任何将html内容提取到控制器的方法。

I used controller render method, 我使用了控制器渲染方法,

$render = new PHPRenderer(); $ render =新的PHPRenderer(); $render->render(); $ render->渲染();

But the code stop execution after above code and load view. 但是代码在上面的代码和加载视图之后停止执行。 I need to set HTML content to Email body. 我需要将HTML内容设置为“电子邮件正文”。

You just need to use ViewRenderer service. 您只需要使用ViewRenderer服务。 So, just passing this service to your controller, then call it if you want to render the view. 因此,只需将此服务传递给您的控制器,然后就可以渲染视图了。

Example: I assume your controller name is SendEmailController . 示例:我假设您的控制器名称是SendEmailController So in Factory you need to retrieve the ViewRenderer service, then pass it to controller 因此,在Factory您需要检索ViewRenderer服务,然后将其传递给控制器

use Zend\ServiceManager\Factory\FactoryInterface;
use Interop\Container\ContainerInterface;

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

And code in the controller 和控制器中的代码

use Zend\Mvc\Console\Controller\AbstractConsoleController;
use Zend\View\Model\ViewModel;
use Zend\View\Renderer\RendererInterface 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
    }

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM