是否有任何方法可以在控制器中获取视图的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
}
}