Вы можете определить частичные элементы в стеке шаблонов в обоих модулях. Помните, что ключи должны быть разными. И затем используйте ключ вместо имени файла. Как и в вашем случае, у вас есть appPartial
и partial
.
Вы можете скачать частично эти клавиши.
<?php echo $this->partial('partial'); ?>
Или
<?php echo $this->partial('appPartial'); ?>
Upadte:
Вы можете категории ваши макеты в подкаталоги.
layout/
admin/
layout.phtml
login/
partials/
layout.phtml
Если у вас есть общий частичный, вы можете включить его во все макеты, не определяя его снова. Вы можете использовать заданный ключ в вашем Update layout.phtml
:
Вот мой код для реализации различных раскладок на различных контроллеров в одном модуле. Может быть, вы найдете что-то полезное.
if ($controllerName == "Application\Controller\Index") {
if (is_readable(__DIR__ . '/view/layout/layout.phtml')) {
$controller->layout('layout/layout');
}
} else if ($controllerName == "Application\Controller\Admin" && $statusCode != "404") {
if (is_readable(__DIR__ . '/view/layout/admin/layout.phtml')) {
$controller->layout('admin/layout');
}
} else {
if (is_readable(__DIR__ . '/view/layout/layout.phtml')) {
$controller->layout('layout/layout');
}
}
admin/layout
и layout/layout
определяются как
'view_manager' => array(
'display_not_found_reason' => true,
'display_exceptions' => true,
'doctype' => 'HTML5',
'not_found_template' => 'error/404',
'exception_template' => 'error/index',
'template_map' => array(
'layout/layout' => __DIR__ . '/../view/layout/layout.phtml',
'layout/_top' => __DIR__ . '/../view/layout/_top.phtml',
'layout/_header_navigation' => __DIR__ . /../view/layout/_header_navigation.phtml',
'layout/_footer_navigation' => __DIR__ . '/../view/layout/_footer_navigation.phtml',
'layout/_footer' => __DIR__ . '/../view/layout/_footer.phtml',
'application/index/index' => __DIR__ . '/../view/application/index/index.phtml',
'error/404' => __DIR__ . '/../view/error/404.phtml',
'error/index' => __DIR__ . '/../view/error/index.phtml',
'admin/layout' => __DIR__ . '/../view/layout/admin/layout.phtml',
'admin/layout/login' => __DIR__ . '/../view/layout/admin/login.phtml',
'admin/layout/leftpanel' => __DIR__ . '/../view/layout/admin/_leftpanel.phtml',
'admin/layout/headerpanel' => __DIR__ . '/../view/layout/admin/_headerpanel.phtml',
'jstranslations' => __DIR__ . '/../view/layout/_jstranslations.phtml',
'partial/_regional_searh_lists' => __DIR__ . '/../view/partials/_regional_search_lists.phtml',
'partial/_paginator' => __DIR__ . '/../view/partials/_paginator.phtml',
'email/deleted_user' => __DIR__ . '/../view/partials/_deleted_user_message_template.phtml',
'email/deleting_user' => __DIR__ . '/../view/partials/_deleting_user_message_template.phtml',
'email/delete_account' => __DIR__ . '/../view/partials/_delete_account.phtml',
),
'template_path_stack' => array(
__DIR__ . '/../view',
),
),
module.config.php
В
привет jmleroux, да, мы можем сопоставить различные парциальные с помощью template_map на module.config.php. , например. \t \t 'template_map' => массив ( 'apppartial' => __DIR__. '/../view/application/partial/footer.phtml', ), и мы можем использовать =$this-> частичное ('apppartial') ?>, чтобы сделать частичный. Фокус в том, чтобы использовать разные ключи для частичного, как вы сказали. Но затем мы скоро заполним template_map частичными путями. Это звучит не очень хорошо. – Laxman
Это не трюк, но хорошая практика, чтобы назвать ваши взгляды с ясными именами. Название типа «mymodule/footer» лучше, чем «нижний колонтитул», потому что вы можете быстро определить первое. Я действительно не понимаю, почему заполнение карты шаблонов частичными звуками плохо (это более эффективный путь, чем path_stack), но вы можете просто использовать template_map для представлений специфики, таких как нижние колонтитулы, и сохранить path_stack для остальных. – jmleroux
мы также не можем использовать template_map все время. Это не кажется разумным, если нам нужно заполнить template_map каждый раз, когда мы создаем новый частичный. Проблема заключается не только в одном footer.phtml. Что бы вы сделали, если бы у нас было, скажем, 25 партикулов по каждому модулю. Я согласен с вами в том, что template_map будет более эффективным, но поверьте мне, что это не всегда лучшая идея. – Laxman