I have a problem with the EdpModuleLayouts module. I put Module.php in module/EdpModuleLayouts/ directory with the following content:
<?php
namespace EdpModuleLayouts;
class Module {
public function onBootstrap($e) {
$e->getApplication()->getEventManager()->getSharedManager()->attach('Zend\Mvc\Controller\AbstractActionController', 'dispatch', function($e) {
$controller = $e->getTarget();
$controllerClass = get_class($controller);
$moduleNamespace = substr($controllerClass, 0, strpos($controllerClass, '\\'));
$config = $e->getApplication()->getServiceManager()->get('config');
if (isset($config['module_layouts'][$moduleNamespace])) {
$controller->layout($config['module_layouts'][$moduleNamespace]);
}
}, 100);
}
}
I also registered it in the config/application.config.php:
return array(
'modules' => array(
'EdpModuleLayouts',
'Main',
'Administrator',
'Object'
),
'module_layouts' => array(
'Main' => 'layout/main',
'Administrator' => 'layout/admin',
),
'module_listener_options' => array(
'module_paths' => array(
'./module',
),
'config_glob_paths' => array(
'config/autoload/{,*.}{global,local}.php',
),
),
);
The config ot the "main" module looks like:
<?php
return array(
'router' => array(
'routes' => array(
'Main' => array(
'type' => 'Literal',
'options' => array(
'route' => '/main',
'defaults' => array(
'__NAMESPACE__' => 'Main\Controller',
'controller' => 'Index',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array(
'default' => array(
'type' => 'Segment',
'options' => array(
'route' => '[/:controller][/:action][/:id]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]*',
),
'defaults' => array(
),
),
),
),
),
),
),
'service_manager' => array(
'factories' => array(),
),
'controllers' => array(
'invokables' => array(
'Main\Controller\Index' => 'Main\Controller\EmailController',
'Main\Controller\Error' => 'Main\Controller\ErrorController',
'Main\Controller\FAQ' => 'Main\Controller\FAQController',
'Main\Controller\Index' => 'Main\Controller\IndexController',
'Main\Controller\Pages' => 'Main\Controller\PagesController',
'Main\Controller\Settings' => 'Main\Controller\SettingsController',
'Main\Controller\User' => 'Main\Controller\UserController',
),
),
'view_manager' => array(
'template_map' => array(
'layout/main' => __DIR__ . '/../view/layout/main_layout.phtml',
'layout/header' => __DIR__ . '/../view/layout/main_header.phtml',
'layout/footer' => __DIR__ . '/../view/layout/main_footer.phtml',
'index/index' => __DIR__ . '/../view/index/index.phtml',
'error/404' => __DIR__ . '/../view/error/404.phtml',
'error/index' => __DIR__ . '/../view/error/index.phtml',
),
'template_path_stack' => array(
__DIR__ . '/../view',
),
'display_exceptions' => true,
'exception_template' => 'error/index',
'display_not_found_reason' => true,
'not_found_template' => 'error/404',
),
);
But when I access whatever module in the application I want, it throws an exception:
( ! ) Fatal error: Uncaught exception 'Zend\View\Exception\RuntimeException' with message 'Zend\View\Renderer\PhpRenderer::render: Unable to render template "layout/layout"; resolver could not resolve to a file' in D:\WebServer\www\homepage\vendor\library\Zend\View\Renderer\PhpRenderer.php on line 461 ( ! ) Zend\View\Exception\RuntimeException: Zend\View\Renderer\PhpRenderer::render: Unable to render template "layout/layout"; resolver could not resolve to a file in D:\WebServer\www\homepage\vendor\library\Zend\View\Renderer\PhpRenderer.php on line 461
What's the reason?