Макет рендеринга на производственном сервере
Мой производственный сервер не может обработать мой логин. На моей системе разработки все работает отлично.
Здесь появляется ошибка на сайте производства:
Неустранимая ошибка: Uncaught Zend\View\Exception\RuntimeException: Zend\View\Renderer\PhpRenderer::render: Невозможно отобразить шаблон "layout/layoutlogin"
Как я это сделал:
мой Application/config/module.config.php
дает шаблоны следующим образом:
'view_manager' => [
'display_not_found_reason' => true,
'display_exceptions' => true,
'doctype' => 'HTML5',
'not_found_template' => 'error/404',
'exception_template' => 'error/index',
'template_map' => [
'layout/layout' => __DIR__ . '/../view/layout/layout.phtml',
'layout/layoutlogin' => __DIR__ . '/../view/layout/layoutlogin.phtml',
'application/index/index' => __DIR__ . '/../view/application/index/index.phtml',
'error/404' => __DIR__ . '/../view/error/404.phtml',
'error/index' => __DIR__ . '/../view/error/index.phtml',
],
'template_path_stack' => [
__DIR__ . '/../view',
],
],
В моем Indexcontroller я установил макет:
$this->layout()->setTemplate('layout/layoutlogin');
Это может сделать то, что я хочу!? Я не получаю ни ошибки, ни предупреждения в режиме разработки в среде разработки. Любые идеи приветствуются!
2 ответа
Ошибка не устранена. На самом деле это была проблема конфигурации сервера. В этом случае у Apache не было достаточно прав для папки.
данные / кэш
Вы можете попробовать этот способ
public function loginAction()
{
// Provide the layout here
$this->layout('layout/layoutlogin');
$view = new ViewModel();
// Here you may set the template
$view->setTemplate("/module/controller/template");
return $view;
}
На самом деле это означает, что вы используете макет, отличный от стандартного, и тогда внутри этого макета вы можете использовать шаблон, который вы хотите для этого.