2014-05-01 3 views
3

Примечание: Во-первых, внимательно прочитайте вопрос.Как изменить basePath в Zend Framework 2 для модуля

Я новичок в ZF2. Сейчас я работаю над zend framework 2.3. У меня есть три модуля в этом проекте, и я работаю над Wamp.

  1. Применение ----------- // По умолчанию ZF2 Страница.
  2. Альбом ------------ // ZF2 Учебник Пример
  3. Html ------------ // Я создал

У меня есть создал пользовательский макет для модуля Html (последний). Но есть проблема basePath. Я не получаю правильный путь страницы в этом модуле. так что я изменить в HTML/конфигурации/module.config.php и добавьте следующий скрипт в module.config.php

'view_manager' => array(
    'base_path' => 'zend/public/htmlmodule/', 
    'template_path_stack' => array(
    'html' => __DIR__ . '/../view', 
    ), 
), 

Теперь я получаю правильный BasePath для этого модуля. Но теперь базовый путь автоматически изменяется для двух других модулей, таких как альбом и приложение. Теперь я удалил код выше и добавить этот код в zend\config\autoload\local.php

view_manager' => array(
    'base_path' => 'zend/public/htmlmodule/', 
    'template_path_stack' => array(
    'html' => __DIR__ . '/../view', 
    ), 
), 

Теперь этот сценарий был путь изменения для всех модулей.

Теперь, мой вопрос: я хочу изменить базовый путь для конкретного модуля и макета (необязательно), а не для всего модуля и хочу, чтобы другой базовый путь отличался от модуля. На самом деле без правого базового пути вы не получите правильный файл image/css и js.

Здесь я делюсь файлом module.config.php для всех 2 модулей.

<?php 

//Album Module > module.config.php 

return array(
'controllers' => array(
    'invokables' => array(
     'Album\Controller\Album' => 'Album\Controller\AlbumController', 
    ), 
), 

'router' => array(
    'routes' => array(
     'album' => array(
      'type' => 'segment', 
      'options' => array(
       'route' => '/album[/][:action][/:id]', 
       'constraints' => array(
        'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
        'id'  => '[0-9]+', 
       ), 
       'defaults' => array(
        'controller' => 'Album\Controller\Album', 
        'action'  => 'index', 
       ), 
      ), 
     ), 
    ), 
), 

'view_manager' => array(
    'base_path' => 'zend/public/album', 
    'template_path_stack' => array(
     'album' => __DIR__ . '/../view', 
     ), 
    ), 
); 

и HTML модуль module.config.php является:

<?php 
return array(
    'controllers' => array(
     'invokables' => array(
      'Html\Controller\Html' => 'Html\Controller\HtmlController', 
     ), 
    ), 
    'module_layouts' => array(
    'Application' => 'layout/layout.phtml', 
    'Html' => 'layout/custom.phtml', 
), 

'router' => array(
    'routes' => array(
     'html' => array(
      'type' => 'segment', 
      'options' => array(
       'route' => '/html[/][:action][/:id]', 
       'constraints' => array(
        'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
        'id'  => '[0-9]+', 
       ), 
       'defaults' => array(
        'controller' => 'Html\Controller\Html', 
        'action'  => 'index', 
       ), 
      ), 
     ), 
    ), 
), 

'view_manager' => array(
    'base_path' => 'zend/public/htmlmodule/', 
    'template_path_stack' => array(
     'html' => __DIR__ . '/../view', 
     ), 
    ), 
); 

Я хочу знать, где я делаю неправильно и как я буду получать право базового пути по модулю.

Спасибо всем за вклад в этот вопрос.

+0

Я внимательно прочитал ваше сообщение, но довольно сложно понять, чего вы пытаетесь достичь. Это ваша обязанность четко описать вашу проблему, чтобы сообщество могло вам помочь. Попробуйте объяснить, что пошло не так, например: « basePath();?> В index.phtml возвращает '/ htmlmodule' для модуля 'HTML' (правильно), а для модуля 'Album' то же самое, однако я хочу, чтобы он возвращал '/ album'." – Siwei

+0

Да, вы правы Уважаемый ..! Я хочу basePath/public/htmlmodule для html-модуля и общедоступного/альбома basepath для модуля альбома. –

ответ

1

Введите base_path ключей каждому менеджеру просмотра, как вы это сделали, затем попробуйте использовать $this->getHelper('basePath')->setBasePath() для просмотра моделей, которые вы генерируете, только чтобы убедиться.

Как предостережение, я избегала эту проблему полностью, сделав основной путь «низкая точка» в дереве, в вашем случае:

'view_manager' => array(
    'base_path' => 'zend/public/', 
    'template_path_stack' => array(
     'html' => __DIR__ . '/../view', 
    ), 
), 

, а затем добавить модуль конкретных разделов пути в определенных представлениях модуля. Поэтому, если бы я хотел получить доступ к конкретным альбомам css или js в папке альбома под публикой, то, на мой взгляд, я бы ссылался на базовый путь и просто добавлял «/ album» до остальной части пути. Меньшая головная боль для вас Я верю, что если вы сделаете это так.

Смежные вопросы