404错误,Zend Framework 2路由无法匹配请求的URL

时间:2013-02-19 15:19:19

标签: zend-framework2

我得到了:

  

发生了404错误

     

找不到网页。路由无法匹配请求的URL。

我的module.config.php文件是:

'router' => array(
    'router' => array(
        'Test' => array(
            'type' => 'Segment',
            'options' => array(
                //http://localhost/Test/Test
                'route' => '/Test[/[:action]]',
                'constraints' => array(
                'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
             ),
             'defaults' => array(
                 'controller' => 'Test\Controller\Test',
                 'action' => 'Test'
              ),
          ),
      ),
   ),
),

请帮助,我是Zend Framework 2的新手!

6 个答案:

答案 0 :(得分:3)

您应该在ZendSkeletonApplication中使用类似Application模块的配置:

'router' => array(
    'routes' => array(
        'test' => array(
            'type'    => 'Literal',
            'options' => array(
                'route'    => '/book',
                'defaults' => array(
                    '__NAMESPACE__' => 'Test\Controller',
                    'controller'    => 'Test',
                    '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(
                        ),
                    ),
                ),
            ),
        ),
    ),
),

您只需添加以下代码:

'test' => array(
                    'type'    => 'Segment',
                    'options' => array(
                        'route'    => '[/:action][/:id]',
                        'constraints' => array(
                            'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                            'id'     => '[0-9]*',
                        ),
                        'defaults' => array(
                            '__NAMESPACE__' => 'Test\Controller',
                            'controller'    => 'Test',
                            'action'        => 'index',
                        ),
                    ),
                ),

将此代码添加到'子路线'密钥,然后您将访问url:localhost /:controller_name /:action_name /:id(例如:http://zf.dev/test/indexhttp://zf.dev/test/add/1)。现在它的工作! 此代码可以修复zf2文档中的教程错误404。

答案 1 :(得分:2)

你有一个错字,试试这个:

'router' => array(
    'routes' => array(

路由而不是路由器两次..

答案 2 :(得分:1)

实现修复,我错过了字母“d”,因此:Zend \ Loader \ StandarAutoloader我添加了“d”:Zend \ Loader \ StandardAutoloader。问候朋友。提示:Zend Studio 10和他的版本de ZF2在这一刻运行完美!

答案 3 :(得分:0)

请检查.htaccess文件和index.php文件。如果它们存在于公用文件夹中,则必须使用URL作为

 http://localhost/public/Test/Test.

您的代码几乎是正确的。安德鲁引导你。让我知道你的回应。

答案 4 :(得分:0)

1.您还应该查看application.config.php 并将您的模块名称添加到RETURN数组中。

return array(    
    'modules' => array(
        'Application',
        'your_module',
        .....    
 ),

2.如果没有。检查module.config.php

中的路由数组

答案 5 :(得分:0)

我建议还检查已缓存配置文件的数据文件夹,在开发安装中缓存的配置文件也可能导致此问题。 删除数据/缓存中的文件并尝试。

PS:如果您刚刚开始尝试在zend网站上使用博客模块,那么它适用于初学者,并且会针对新版本进行更新。

https://framework.zend.com/manual/2.4/en/in-depth-guide/first-module.html