По умолчанию страница устанавливается в массиве Application
module.config следующим образом:
'template_map' => array(
'error/404' => __DIR__ . '/../view/error/404.phtml'
Я хочу изменить страницу. Я хочу новый ViewModel
для него полный переменных. Это означает, что просто изменить шаблон недостаточно:
'error/404' => __DIR__ . '/../view/error/my_new_404_template.phtml'
Но я не могу понять, как это сделать. Я не вижу, как запрос приходит к 'error/404'
.
Как создать для него новый
ViewModel
?Как прикрепить к нему переменные?
Как маршрут подходит к
'error/404'
, чтобы поймать его, чтобы изменить?
Например, у меня есть такой метод для страницы 'error/404'
:
public function pageNotFoundAction() {
$view = new ViewModel();
$view->setTemplate('error/404'); // set my template
$sm = $this->getServiceLocator()->get('SessionManager');
$cont = new Container('SomeNamespace', $sm);
$view->var1 = $cont->offsetGet('someValue1'); // the "error/404" template
$view->var2 = $cont->offsetGet('someValue2'); // is full of variables
$view->var3 = $cont->offsetGet('someValue3');
$view->var4 = "One more view variable";
// And now I return it somewhere and want it to be called
// in case of "the page is not found"
return $view;
}
Как сделать такое изменение? Я не могу заставить систему, которую они создали, справиться с такими вещами, как 'error/404'
. Пожалуйста помоги.
ОБНОВЛЕНИЕ 1
Еще более сложная задача. Как иметь несколько 'error/404'
страниц? Хотел бы спросить у ребят, создававших фреймворк, знают ли они, что 'not_found_template'
не может иметь массив из 'error/404'
страниц. Как это может быть? Если я установлю этот параметр следующим образом:
'template_map' => array(
'error/404' => __DIR__ . '/../view/error/404.phtml',
'my-page/one_more_error404' => __DIR__ . '/../view/my-page/my-page/one_more_error404.phtml',
'other_page/second_404' => __DIR__ . '/../view/other-page/one_more_error404.phtml',
'not_found_template' => array(
'error/404',
'my-page/one_more_error404',
'other-page/second_404',
);
выдает ошибку. 'not_found_template'
заставить вас иметь только один 'error/404'
шаблон?