zf3-mvc-layout-manager
Gerenciador de Layout para módulos em ZF3., (*1)
Se você tiver um aplicativo modular, cada módulo pode possuir um layout diferente., (*2)
Normalmente Login e Dashboard deve compor CSS e JavaScript diferentes e separados., (*3)
Atualmente, isso não é suportado por padrão no zendframework., (*4)
Este pacote permitirá que você defina layout's diferentes para módulos diferentes., (*5)
Instalando
Execute em seu terminal o comando abaixo:, (*6)
composer require sergiohermes/zf3-mvc-layout-manager
, (*7)
Adicione ** config/modules.config.php **:, (*8)
"modules" => [
"ZF3LayoutManager"
],
Como utilizar:
Em cada modulo por padrão existe o arquivo module.config.php que possui esta configuração de view_manager., (*9)
'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',
],
],
Este módulo não força você a fugir do padrão referenciado atráves do "Listener" uma escuta do evento manageLayoutForModule que está no arquivo Layout.php, (*10)
Logo se você precisa alterar o template_map da view_manager, sinta-se a vontade em colocar o valor que você precisa, lembrando que a chave também pode ser alterada, mas gera uma manutenção desapropriada com a finalidade deste recurso. Então reutilize o quanto for adequado., (*11)
Configuração
Zend Framework possui uma configuração explicita, ou seja, se você não configurar valores ele define atributos padronizados do framework., (*12)
Então vamos configurar :neckbeard:, (*13)
Crie um arquivo nas configurações globais do seu projeto.
Normalmente localizado em config/autoload chamado layout.global.php ou copie o arquivo config/zf3-mvc-layout-manager.php.dist., (*14)
Vamos supor que eu tenha 3 módulos em minha aplicação ** Admin, Dashboard e Login** a configuração ficará como abaixo:, (*15)
GLOBAL CONFIG
'module_layouts' => [
'Admin' => 'layout/admin-layout',
'Dashboard' => 'layout/dashboard-layout',
'Login' => 'layout/login-layout',
],
LOCAL CONFIG
Módulo ADMIN
Em cada modulo por padrão existe o arquivo module.config.php que possui esta configuração de view_manager., (*16)
'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',
'layout/admin-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',
],
],
Módulo Dashboard
Em cada modulo por padrão existe o arquivo module.config.php que possui esta configuração de view_manager., (*17)
'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',
'layout/dashboard-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',
],
],
Módulo Login
Em cada modulo por padrão existe o arquivo module.config.php que possui esta configuração de view_manager., (*18)
'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',
'layout/login-layout' => __DIR__ . '/../view/layout/layout.phtml',
'error/404' => __DIR__ . '/../view/error/404.phtml',
'error/index' => __DIR__ . '/../view/error/index.phtml',
],
'template_path_stack' => [
__DIR__ . '/../view',
],
],
Perceba que você pode usar layout/layout , e na verdade eu uso assim mas acredito que para titulo de tutorial você irá entender melhor como a mágica funciona., (*19)
Feliz natal e ano novo!, (*20)