Проблема с загрузкой просмотра на EVENT_RENDER_ERROR - PullRequest
0 голосов
/ 06 мая 2019

Я новичок в ZF2, и мне кажется, что я не могу делать то, что хотел.

В проекте, над которым я работаю, иногда появляются исключения для PDO, которые я не могу уловить в данный момент, поэтому я хочу иметь общийфункция при загрузке приложения, которая будет загружать пользовательскую страницу ошибки при возникновении такого исключения.

Когда в этих исключениях происходит исключение, в файле global.php «exception_template» не загружается, поэтому я создал функцию, которую я вызываю при EVENT_RENDER_ERROR, где яв основном хочу загрузить это представление.

Я пробовал такие вещи, как:

$redirect_view = new ViewModel();
$redirect_view->setTemplate('error/exception');

также пробовал это:

$e->setViewModel()->clearChildren();
$e->setViewModel()->addChild($redirect_view);
$e->stopPropagation(true);

Но я либо получаю эту ошибку:

[06-May-2019 15:11:19 Европа / Берлин] Неустранимая ошибка PHP: необработанное исключение «Zend \ View \ Exception \ RuntimeException» с сообщением «Zend \ View \ Renderer \ PhpRenderer :: render:Невозможно отобразить шаблон "исключение";распознаватель не может разрешить файл »в /var/www/vhosts/mopinion.nl/mopinion/vendor/zendframework/zendframework/library/Zend/View/Renderer/PhpRenderer.php:499

или это:

# 0 /var/www/vhosts/mopinion.nl/mopinion/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractActionController.php(83): панель инструментов \Controller \ InboxController-> listAction ()
# 1 [внутренняя функция]: Zend \ Mvc \ Controller \ AbstractActionController-> onDispatch (Object (Zend \ Mvc \ MvcEvent))

Я просто хочузагрузить простой вид в случае непредвиденной ошибки во всем проекте.

Заранее спасибо.

1 Ответ

1 голос
/ 06 мая 2019

Вы можете определить собственный шаблон ошибки для вашего модуля различными способами. Наиболее распространенный - и, на мой взгляд, более простой способ - это подход путем определения шаблона в файле module.config.php вашего модуля.

return [
    'controllers' => [ 
        /* your controllers here */
    ],
    'routes' => [
        /* your routes go here */
    ],
    'view_manager' => [
        'exception_template' => 'error/exception',
        'template_map' => [
            'error/exception' => __DIR__ . '../view/error/exception.phtml'
        ],
        'template_path_stack' => [
            __DIR__ . '../view',
        ],
    ],
];

Как видите, вы можете добавить индивидуальный шаблон с помощью опции template_map. Кроме того, добавьте новый путь в стек путей к шаблонам, и Zend Framework будет обходить стек до тех пор, пока не будет найден шаблон исключения.

...