Php 无法使用ZF2中的模块进行路由

Php 无法使用ZF2中的模块进行路由,php,zend-framework2,zend-framework-modules,zend-framework-routing,Php,Zend Framework2,Zend Framework Modules,Zend Framework Routing,我已经创建了一个模块,它是ZF2文档中给出的相册示例的基本副本,然而,有了新模块,我根本无法访问它——我总是收到一个404错误。我正在ZF2骨架上构建这个 我已经加载了三个模块:应用程序、前端和安全性 前端和安全性都是相互重复的,但是,我已经彻底检查过,没有对旧代码的引用(因为我从字面上复制了模块文件夹并重命名/重写了引用) 该模块也加载在application.config.php中 你知道我遗漏了什么吗 模块配置: return array( 'controllers

我已经创建了一个模块,它是ZF2文档中给出的相册示例的基本副本,然而,有了新模块,我根本无法访问它——我总是收到一个404错误。我正在ZF2骨架上构建这个

我已经加载了三个模块:应用程序、前端和安全性

前端和安全性都是相互重复的,但是,我已经彻底检查过,没有对旧代码的引用(因为我从字面上复制了模块文件夹并重命名/重写了引用)

该模块也加载在application.config.php中

你知道我遗漏了什么吗

模块配置:

return array(
            'controllers' => array(
                    'invokables' => array(
                            'Security\Controller\Security' => 'Security\Controller\SecurityController',
                    ),
            ),

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

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

有几件事需要确保:-

您必须在中添加模块

  • application.config.php(您说您已经完成了)
  • Security\Controller\Security在默认情况下也必须相同(您已经有了)
  • 还有一件事是你的文件夹结构。。。。 -
只需仔细检查一下,您有一个/MODULE/src/模块/Controller/Controller\u FILE\u NAME.php


我希望这会有所帮助。

需要确保的是:-

您必须在中添加模块

  • application.config.php(您说您已经完成了)
  • Security\Controller\Security在默认情况下也必须相同(您已经有了)
  • 还有一件事是你的文件夹结构。。。。 -
只需仔细检查一下,您有一个/MODULE/src/模块/Controller/Controller\u FILE\u NAME.php


我希望这会有所帮助。

在学习骨架应用程序教程()时,我遇到了同样的问题。每当我在浏览器中转到相册url时(
ZendSkeletonApplication/public/album
),我都会看到一个404错误页面,但没有关于我为什么得到404的详细信息。我不清楚,当我仔细检查了所有内容,并且非常确定我正确地复制和配置了相册模块时,我如何才能确定我为什么得到404。结果是我的路径(module.config.php)中缺少了一个斜杠。例如,我有
'route'=>'相册[/:action][/:id]
而不是
'route'=>'/album[/:action][/:id]

我只能通过故意拼写错误来找出原因,例如在invokables值中使用
'Album\Controller\Albums'
而不是
'Album\Controller\Album'
,这将导致显示堆栈跟踪,然后显示在请求中调用的ZF2类。我会继续拼写错误,测试,然后纠正module.config.php的每个部分,直到我得到了导致错误的配置部分的线索


我很确定这不是调试应用程序配置的最佳方式

我在学习骨架应用程序教程()时遇到了同样的问题。每当我在浏览器中转到相册url时(
ZendSkeletonApplication/public/album
),我都会看到一个404错误页面,但没有关于我为什么得到404的详细信息。我不清楚,当我仔细检查了所有内容,并且非常确定我正确地复制和配置了相册模块时,我如何才能确定我为什么得到404。结果是我的路径(module.config.php)中缺少了一个斜杠。例如,我有
'route'=>'相册[/:action][/:id]
而不是
'route'=>'/album[/:action][/:id]

我只能通过故意拼写错误来找出原因,例如在invokables值中使用
'Album\Controller\Albums'
而不是
'Album\Controller\Album'
,这将导致显示堆栈跟踪,然后显示在请求中调用的ZF2类。我会继续拼写错误,测试,然后纠正module.config.php的每个部分,直到我得到了导致错误的配置部分的线索


我很确定这不是调试应用程序配置的最佳方式

我知道这是一个老帖子。但是,要确保模块顶部目录(与Module.php文件的目录相同)中有“autoload_classmap.php”
里面有“
”的文件。

我知道这是一篇老文章。但是,要确保模块顶部目录(与Module.php文件的目录相同)中有“autoload_classmap.php”
文件中包含“
”。

了解规则是否已正确添加到路由的简单提示,您可以在任何工作模块内的配置文件中检查路由值,如下所示:

 $config         = $this->serviceLocator->get('config');
 var_dump($config);

一个简单的提示,要知道您的规则是否已正确添加到路由,您可以在任何工作模块内的配置文件中检查路由值,如下所示:

 $config         = $this->serviceLocator->get('config');
 var_dump($config);

您是否在模块配置中设置了路由?我已在模块配置中设置了路由,我将发布它。我假设您已启用apache模块
重写
,并且您的虚拟主机允许覆盖(或启用URL重写)?是的,所有这些都已设置。/frontend模块工作正常,只是/security模块没有。您检查了名称空间吗?您在模块配置中设置了路由吗?我已经在模块配置中设置了路由,我将发布它。我假设您启用了apache模块
重写
,并且您的虚拟主机允许重写(或启用URL重写)?是,所有这些都已设置好。/frontend模块工作正常,只是/security模块没有工作。是否检查了名称空间?我刚刚下载了zend 2 skeleton应用程序,并开始调用该项目,而没有使用任何virtualhost。url localhost/zend/public/正常。但是如果我调用任何其他url,比如localhost/zend/public/application(指向与上面相同的控制器),它将无法工作。另外,如果我将url localhost/zend/public/更改为localhost/zend/public/home,这将不起作用。我怎样才能解决这个问题