简体   繁体   中英

Php Zend 2 Route not found

I'm creating a new small application with Zend Framework 2 and I've some problem with routes... I've created aa new module cloning the Skeleton Module with Git and renaming it "Users". I've added controllers to register a new user, to login and to perform CRUD operations.

This is my module folder structure:

文件夹结构

and this is my module.config.php file:

<?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',
    ),
    ),
);

When I try with my browser the url test.local/users/login or test.local/users/register everything works fine but if I try test.local/users/user-manager I get the following error:

Route with name "user-manager" not found

whilst with test.local/users/user-manager/edit/5 it is rendered the correct page. I'm bit confused and I don't know how to solve this problem.

Any help is very appreciated. Thanks in advance.

problem solved! @AlexP was right, the problem was in index.phtl file with $this->url('user-manager'); , I've changed in $this->url('users/user-manager') and now it works.

Thanks again!

I think the issue is with constraints and default values. Try to remove constraints in user-manager route and see what happen.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM