Настройте ZF2 view_manager для загрузки двух отдельных карт шаблонов.

Мне нужны 2 разные карты шаблонов в ZF2, одна для администратора и другая для внешнего интерфейса, в настоящее время, насколько я вижу, ZF2 объединяет 2 файла module.config.php, которые используются в 2 модулях, которые я настроил, и вызывает карту шаблона. Мне нужно установить для администратора, чтобы он также загружался в передний модуль.

модуль /Application.config.php

...
'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',
            '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(
            __DIR__ . '/../view',
        ),
...

модуль /admin.config.php

...
'view_manager' => array(
        'template_path_stack' => array(
            'admin' => __DIR__ . '/../view',
        ),
        'template_map' => array(
            'layout/layout'           => __DIR__ . '/../view/layout/layout.phtml',
        ),
    ),
...

что мне изменить, чтобы я мог загружать отдельные массивы «view_manager» для двух отдельных модулей?


person Andrei Stanca    schedule 16.11.2012    source источник


Ответы (3)


Было бы здорово, если бы вы могли объяснить, почему вы пытаетесь достичь этого. Как я вижу, вы пытаетесь использовать другой макет для администратора. Может быть, вы хотите взглянуть на этот модуль, который уже может делать то, что вы пытаетесь https://github.com/zf-commons/zfcadmin. Этот модуль имеет настройку макета для маршрута администратора.

person Martin Shwalbe    schedule 18.11.2012
comment
спасибо, я не знал о существовании уже настроенного zfcadmin. Не знаю, как объяснить больше, почему im trying to achive this, except I want the admin module ive create имеет другой макет, но это не совсем удалось, потому что любая попытка изменить макет для административного модуля ive created will also change the layout for the main module (Application). After some research, ive увидела, что zend объединит файлы module.config для всех модулей, и не нашел способа отделить часть макета. - person Andrei Stanca; 19.11.2012

У меня тоже была эта проблема. Я выбрал подход, который предлагается в следующем модуле.

https://github.com/EvanDotPro/EdpModuleLayouts

person Beniston    schedule 26.11.2012

Я новичок в ZF2, и я тоже искал ответ о том, как создать совершенно другой шаблон для панели инструментов, администратора и внешнего интерфейса.

Я использовал EdpModuleLayouts, как предлагается здесь и во многих других сообщениях. Это решило один аспект проблемы. Расположение. Теперь я мог предоставить разные макеты для одного и того же шаблона, которые хорошо работали бы, если бы я использовал один и тот же шаблон или хотел проверить другой макет, например, для забытого пароля, регистрации или входа в систему. Но я этого не сделал. Мне нужен был совершенно другой набор папок, файлов css и т. д. В этот момент я мог бы просто вложить все шаблоны в папку шаблонов и указать ссылки в файлах макета на соответствующие папки. Но и этого я не хотел.

Я также включил модуль zfc-admin в свое приложение, что дало мне представление о другом аспекте, который заключается в предоставлении другого источника непосредственно для файлов. (удалено потом)

Поэтому добавьте, добавив следующее в мой module_name/config/module.config.php

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

Включение EdpModuleLayouts в application.config.php и добавление приведенного ниже кода в приложение module.config.php

'module_layouts' => array(
    'Application' => 'layout/layout',
    'Dashboard' => 'layout/dashboard',
    'Admin' => 'layout/admin',
),

Это, вероятно, не лучший способ сделать это, но он работал. Единственная проблема, которую я действительно вижу при этом, заключается в том, что EdpModuleLayouts хочет извлечь все макеты из папки Application/view/layout. Однако это позволило мне сохранить все мои файлы шаблонов модулей в разделе просмотра модуля, над которым я работаю.

person Lionel Morrison    schedule 21.03.2014