未找到Php Zend 2 Route

时间:2016-03-29 19:43:04

标签: php routes zend-framework2

我正在使用Zend Framework 2创建一个新的小应用程序,我对路由有一些问题...... 我创建了一个新模块,用Git克隆Skeleton模块并将其重命名为“Users”。我添加了控制器来注册新用户,登录和执行CRUD操作。

这是我的模块文件夹结构:

Folder Structure

这是我的module.config.php文件:

<?php
return array(
    'controllers' => array(
    'invokables' => array(
        'Users\Controller\Index' => 'Users\Controller\IndexController',
        'Users\Controller\Register' => 'Users\Controller\RegisterController',
        'Users\Controller\Login' => 'Users\Controller\LoginController',
        'Users\Controller\UserManager' => 'Users\Controller\UserManagerController',
    ),
    ),
    'router' => array(
    'routes' => array(
        'users' => array(
            'type'    => 'Literal',
            'options' => array(
                // Change this to something specific to your module
                'route'    => '/users',
                'defaults' => array(
                    // Change this value to reflect the namespace in which
                    // the controllers for your module are found
                    '__NAMESPACE__' => 'Users\Controller',
                    'controller'    => 'Index',
                    'action'        => 'index',
                ),
            ),
            'may_terminate' => true,
            'child_routes' => array(
                // This route is a sane default when developing a module;
                // as you solidify the routes for your module, however,
                // you may want to remove it and replace it with more
                // specific routes.
                'login' => array(
                    'type'    => 'Segment',
                'may_terminate' => true,
                    'options' => array(
                        'route'    => '/login[/:action]',
                        'constraints' => array(
                            'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
                        ),
                        'defaults' => array(
                            'controller' => 'Users\Controller\Login',
                            'action'     => 'index',
                        ),                              
                    ),
                ),
                'register' => array(
                    'type'    => 'Segment',
                    'may_terminate' => true,
                    'options' => array(
                        'route'    => '/register[/:action]',
                        'constraints' => array(
                            'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
                        ),
                        'defaults' => array(
                            'controller' => 'Users\Controller\Register',
                            'action'     => 'index',
                        ),
                    ),
                ), 
                'user-manager' => array(
                    'type'    => 'Segment',
                    'may_terminate' => true,
                    'options' => array(
                        'route'    => '/user-manager[/:action[/:id]]',
                        'constraints' => array(
                            'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
                            'id'     => '[a-zA-Z0-9_-]*',
                        ),
                        'defaults' => array(
                            'controller' => 'Users\Controller\UserManager',
                            'action'     => 'index',
                        ),
                    ),
                ),
            ),
        ),
    ),
    ),
    'view_manager' => array(
    'template_path_stack' => array(
        'users' => __DIR__ . '/../view',
    ),
    ),
);

当我尝试使用我的浏览器时,网址 test.local / users / login test.local / users / register 一切正常但如果我尝试 test.local / users / user-manager 我收到以下错误:

  

未找到名称“user-manager”的路由

使用 test.local / users / user-manager / edit / 5 时,会呈现正确的页面。 我有点困惑,我不知道如何解决这个问题。

非常感谢任何帮助。提前谢谢。

2 个答案:

答案 0 :(得分:1)

问题解决了! @AlexP是对的,问题出在带有$this->url('user-manager');的index.phtl文件中,我在$this->url('users/user-manager')中已更改,现在可以正常工作。

再次感谢!

答案 1 :(得分:0)

我认为问题在于约束和默认值。尝试删除用户管理器路由中的约束,看看会发生什么。