有什么方法可以在控制器中获取视图的 html 内容吗?我正在尝试从 ZF3 发送 html 电子邮件,但是,我还没有找到任何将 html 内容获取到控制器的方法。
我使用了控制器渲染方法,
$render = new PHPRenderer(); $渲染->渲染();
但是在上面的代码和加载视图之后代码停止执行。我需要将 HTML 内容设置为电子邮件正文。
有什么方法可以在控制器中获取视图的 html 内容吗?我正在尝试从 ZF3 发送 html 电子邮件,但是,我还没有找到任何将 html 内容获取到控制器的方法。
我使用了控制器渲染方法,
$render = new PHPRenderer(); $渲染->渲染();
但是在上面的代码和加载视图之后代码停止执行。我需要将 HTML 内容设置为电子邮件正文。
你只需要使用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
}
}