Есть ли способ для получения содержимого HTML представления в контроллере?
Я пытаюсь отправить html-письмо из ZF3, однако я не нашел способа извлечь html-контент в контроллер.
Я использовал метод рендеринга контроллера,
$ render = new PHPRenderer (); $ Render-> Render ();
Но код прекращает выполнение после приведенного выше кода и загружает представление.
Мне нужно установить содержимое 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
}
}
Других решений пока нет …