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



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

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

Frontend和Security都是重复的,但是,我已经彻底检查过了,没有引用旧代码(因为我确实复制了模块文件夹并重命名/重写了引用)。

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

你知道我遗漏了什么吗?

模块配置:

return array(
'controllers' => array(
'invokables' => array(
'SecurityControllerSecurity' => 'SecurityControllerSecurityController',
),
),
'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' => 'SecurityControllerSecurity',
'action'     => 'index',
),
),
),
),
),
'view_manager' => array(
'template_path_stack' => array(
'security' => __DIR__ . '/../view',
),
),
);

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

我只能通过故意拼写错误来解决问题,比如在invokebles值中使'AlbumControllerAlbums'而不是'AlbumControllerAlbum',这会导致显示堆栈跟踪,然后显示在请求中调用的ZF2类。我会继续拼写错误,测试,然后更正module.config.php的每个部分,直到我知道是什么部分的配置导致了错误。

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

有几件事需要确保:-

你必须在中添加你的模块

  • application.config.php(你说你做到了。)
  • Security\Controller\Security在默认情况下也必须相同(您已经拥有)
  • 还有一件事是你的文件夹结构。。。。-

只需检查您是否有/MODULE/src/MODULE/Controller/FILE_NAME.php

我希望这会有所帮助。。

我知道这是一篇旧帖子。然而,要确保模块顶部目录(与Module.php文件相同的目录)中有"autoload_classmap.php"文件中包含"<?php return array();?>"。

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

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

最新更新