Расположение на модуль zf2

У меня есть 2 модуля, и мне нужно использовать разные макеты для каждого, но все модули всегда используют макет второго загруженного модуля.

application.config.php :

return array(
// This should be an array of module namespaces used in the application.
'modules' => array(
'news',//in this module use Application layout
'Application',
),

0

Решение

Вы могли бы использовать EdpModuleLayouts. Это модуль ZF2, который позволяет настраивать разную компоновку для каждого модуля. Его использование очень просто:

  • Просто установите его в свой продавец папка вашего проекта
  • включить EdpModuleLayouts модуль в application.config.php файл :

    'modules' => array(
    'EdpModuleLayouts', //<---add this line
    'News',
    'Application',
    ),
    
  • Определите макет для каждого модуля в вашем module.config.php файл одного из двух модулей, например в модуле приложения. Здесь мы устанавливаем два макета: news/layout за Новости Модуль и layout/layout за заявка модуль:

    'view_manager' => array(
    'display_not_found_reason' => true,
    'display_exceptions'       => true,
    'doctype'                  => 'XHTML1_TRANSITIONAL',
    'not_found_template'       => 'error/404',
    'exception_template'       => 'error/index',
    'template_map' => array(
    'news/layout'    => __DIR__ . '/../../News/view/layout/admin-layout.phtml',
    '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' => array(
    'application' => __DIR__ . '/../view',
    'news' => __DIR__ . '/../../News/view',
    ),
    ),
    
    'module_layouts' => array(
    'Application' => 'layout/layout',
    'News' => 'news/layout',
    ),
    
2

Другие решения

  1. Установить в вашем {MyNewModule}/Module.php,

    namespace {MyNewModule};
    
    use Zend\ModuleManager\Feature\AutoloaderProviderInterface;
    use Zend\Mvc\ModuleRouteListener;
    use Zend\ModuleManager\ModuleManager;
    use Zend\Mvc\MvcEvent;
    
  2. Создать новый метод Init.

    public function init(ModuleManager $manager){
    
    $events = $manager->getEventManager();
    $sharedEvents = $events->getSharedManager();
    $sharedEvents->attach(__NAMESPACE__, 'dispatch', function($e) {
    $controller = $e->getTarget();
    $controller->layout('layout/***customFile.phtm***');
    }, 100);
    
    }
    
  3. F5, перезарядите свой браузер.

  4. Улыбнись: D
0

У меня тоже был такой же случай, и я решил его так:

Имел модуль login а также applicationчто я сделал, чтобы определить макеты в global.php как это:

return array(
'module_layouts' => array(
'Application' => 'layout/layout.phtml',
'Login' => 'layout/login.phtml'
),
);

Теперь вы должны создать папку в логине макета представления, где бы login.phtml

Теперь в конфигурации модуля входа в систему. Module.config.php

      'view_manager' => array(
'template_path_stack' => array(
'Login' => __DIR__ . '/../view',
),
)
;

Это должно запустить вас.

0
По вопросам рекламы [email protected]