Я знаю, что есть десятки вопросов о том, что PHPRenderer не может найти путь к шаблону, но я думаю, что проблема здесь совершенно иная.
Во-первых, цель состоит в том, чтобы представить представление переменной по порядку.чтобы отправить его в PDF Renderer (я использую модуль ZF3 TCPDF).Если есть какой-нибудь лучший способ сделать это, пожалуйста, скажите мне.
Вот примерно архитектура проекта: https://imgur.com/UhQ7hgP
В AlertAction()
из ToolsController
, я возвращаюпосмотреть, как это, и это работает, что заставляет меня думать, что путь к шаблону в порядке.
$view = new ViewModel();
$view->setTemplate('tools/tools/alert');
return $view;
Однако, когда я пытаюсь сделать то же представление с тем же путем в exportPDFAction()
, он не работаети выдает следующую ошибку:
Zend \ View \ Renderer \ PhpRenderer :: render: Невозможно отобразить шаблон "tools / tools / alert";распознаватель не может преобразовать в файл
Код в exportPDFAction()
:
$view = new ViewModel();
$renderer = new PhpRenderer();
$view->setTemplate('tools/tools/alert');
$html = $renderer->render($view);
Я предполагаю, что последняя строка привинчивает его, так как это разница, но я не могу 'Почему, кто-нибудь знает?
Во всех темах о Путь к шаблону на SO говорилось о карте шаблонов в module.config.php
, но я думаю, что это не проблема, поскольку она прекрасно работает вAlertAction()
.
РЕДАКТИРОВАТЬ
PhpRenderer вводится в контроллер непосредственно в module.config.php:
'controllers' => [
'factories' => [
ToolsController::class => function($container) {
return new ToolsController(
$container->get(Adapter::class),
$container->get(\TCPDF::class),
$container->get(PhpRenderer::class)
);
},
],
],
РЕДАКТИРОВАТЬ 2
Это конструктор контроллера:
public function __construct($db, $tcpdf, $renderer)
{
$this->db = $db;
$this->tcpdf = $tcpdf;
$this->renderer = $renderer;
...
}