По подразбиране страницата е зададена така в масива 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'
. Моля помогнете.
UPD 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'
шаблон?