Module 如何在Zend Framework 2中更改模块的基本路径

Module 如何在Zend Framework 2中更改模块的基本路径,module,zend-framework2,Module,Zend Framework2,注意-首先,仔细阅读问题 我是ZF2的新手。现在我正在开发zend framework 2.3。我在这个项目中有三个模块,我在Wamp上工作 应用程序-----------//默认ZF2页 相册----------------//ZF2教程示例 Html------//我已经创建了 我已经为Html模块创建了一个自定义布局(最后一个)。但是有一个basePath的问题。我在此模块中没有获得正确的页面路径。因此,我在Html/config/module.config.php中进行了更改,并在mod

注意-首先,仔细阅读问题

我是ZF2的新手。现在我正在开发zend framework 2.3。我在这个项目中有三个模块,我在Wamp上工作

  • 应用程序-----------//默认ZF2页
  • 相册----------------//ZF2教程示例
  • Html------//我已经创建了
  • 我已经为Html模块创建了一个自定义布局(最后一个)。但是有一个basePath的问题。我在此模块中没有获得正确的页面路径。因此,我在Html/config/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',
        ),
    ),
    
    现在,该脚本已更改了所有模块的路径

    现在,我的问题是,我想为特定模块和布局(可选)更改基本路径,而不是为所有模块更改基本路径,并希望为不同的模块更改不同的基本路径。实际上,如果没有正确的basepath,您将无法获得正确的image/css和js文件

    在这里,我为所有2个模块共享module.config.php文件

    <?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',
            ),
         ),
     );
    
    我想知道,我哪里做错了,以及如何根据模块获得正确的基本路径


    感谢大家在这个问题上的贡献。

    向每个视图管理器添加特定的
    base\u path
    键,然后尝试对生成的视图模型使用
    $this->getHelper('basePath')->setBasePath()

    作为一个警告,我通过将基本路径设置为树中的“最低点”,完全避免了这个问题,在您的例子中:

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

    然后在特定于模块的视图中添加特定于模块的路径部分。因此,如果我想访问public下相册文件夹中相册特定的css或js文件,那么在我的视图中,我会引用基本路径,只需在路径的其余部分之前添加“/album”。如果你这样做,我相信会让你少头疼。

    我仔细阅读了你的帖子,但很难理解你想要达到的目标。你有义务清楚地描述你的问题,以便社区能够帮助你。试着解释一下哪里出了问题,例如:“在index.phtml中,对于'HTML'模块返回'/htmlmodule'(正确),而对于'Album'模块返回相同的结果,但是我希望它返回'/Album'。“是的,亲爱的,你说得对。。!我想要html模块的basePath/public/htmlmodule和相册模块的basePath public/album。
    'view_manager' => array(
        'base_path' => 'zend/public/',
        'template_path_stack' => array(
            'html' => __DIR__ . '/../view',
        ),
    ),