gpt4 book ai didi

php - ZF2 路由忽略命名空间

转载 作者:可可西里 更新时间:2023-10-31 23:31:07 24 4
gpt4 key购买 nike

我遇到了 zf2 路由问题。我正在使用骨架示例 https://github.com/zendframework/ZendSkeletonApplication/blob/master/module/Application/config/module.config.php ,但是当我绑定(bind)访问 http://localhost/admin/http://localhost/admin/answers 时,我收到 404 消息:

A 404 error occurred

Page not found.

The requested controller could not be mapped to an existing controller class.

Controller:
Index(resolves to invalid controller class or alias: Index)
No Exception available

从错误消息来看,我认为路由器忽略了 __NAMESPACE__。也许有人可以帮我找到解决问题的方法?

我用过https://github.com/zendframework/ZFTool创建模块和 Controller 。我的文件结构是:

module/Admin
├── config
│   └── module.config.php
├── Module.php
├── src
│   └── Admin
│   └── Controller
│   ├── AnswersController.php
│   └── IndexController.php
└── view
└── admin
├── answers
│   └── index.phtml
└── index
└── index.phtml

我的 module.config.php:

return array(
'controllers' => array(
'invokables' => array(
'Admin\Controller\Answers' => 'Admin\Controller\AnswersController',
'Admin\Controller\Index' => 'Admin\Controller\IndexController',
),
),
'router' => array(
'routes' => array(
'admin' => array(
'type' => 'literal',
'options' => array(
'route' => '/admin',
'defaults' => array(
'__NAMESPACE__' => 'Admin\Controller',
'controller' => 'Index',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array(
'default' => array(
'type' => 'segment',
'options' => array(
'route' => '/[:controller[/:action]]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
),
),
),
),
),
),
),
'view_manager' => array(
'template_path_stack' => array(
'admin' => __DIR__ . '/../view',
),
),
);

如果我要更改:'\__NAMESPACE__' => 'Admin\Controller', 'controller' => 'Index','controller' => 'Admin\Controller\Index' 我可以访问 Index Controller ,但不能访问 Answers 。

附加信息:

我发现骨架应用程序有奇怪的行为。我已经下载了新的骨架应用程序并且此配置有效。如果我要访问 localhost/application/indexlocalhost/application/answers,它会正常工作。但是,如果我将应用程序模块名称更改为 Admin 并更改路由器配置(将所有应用程序替换为管理员并将应用程序替换为管理员)并且配置停止工作。谁能解释一下?也许应用程序模块在骨架应用程序中作为默认工作?

我正在使用 Zend Framework 2.2.4。

最佳答案

添加上面的默认键

'answers' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/answers',

'defaults' => array(
'controller' => 'Admin\Controller\Answers',
'action' => 'index',
),
),
),

如果那没有帮助尝试注释默认键那么也许试试通配符?

'application' => array( 
'type' => 'segment',
'options' => array(
'route' => '/[:controller][/:action][/:id]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'Application',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array(
'default' => array(
'type' => 'Wildcard',
'options' => array(
),
),
),
),

这只是引导而不是完整的解决方案

关于php - ZF2 路由忽略命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22246179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com