1

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

我使用了控制器渲染方法,

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

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

4

1 回答 1

2

你只需要使用ViewRenderer服务。因此,只需将此服务传递给您的控制器,然后在您想要呈现视图时调用它。

示例: 我假设您的控制器名称是SendEmailController. 因此,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;
    }
}

和控制器中的代码

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
    }

}
于 2018-02-15T18:24:07.323 回答