2016-12-05 1 views
1

Я использую ZF3, и мне нужно изменить макет моих страниц ошибок. Они называются по следующей конфигурации в заявке modules.config файла:Как изменить макет для страниц с ошибками, настроенных в modules.config?

'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', 
      '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', 
     ], 
    ], 

Как я могу установить конкретный макет для 404.phtml и index.phtml страниц?

ответ

3

Если вы хотите конкретный макет для конкретного действия, вы можете использовать в контроллере:

$this->layout()->setTemplate('layout/anOtherLayout'); 

Если вы хотите, чтобы все действия контроллера имеют такое же расположение, контроллер может наследует AbstractActionController и переопределение его onDispatch() метод:

class IndexController extends AbstractActionController 
{ 
    public function onDispatch(MvcEvent $e) 
    { 
     // Call the base class onDispatch() first and grab the response 
     $response = parent::onDispatch($e);   

     $this->layout()->setTemplate('layout/layout2');     
     // Return the response 
     return $response; 
    } 
} 

Та же логика может быть использована в вашем Module.php где вы можете проверить, если маршрут существует (404) и установить конкретный формат, если нет.

Смежные вопросы