我正在使用Zend Framework 2创建一个新的小应用程序,我对路由有一些问题...... 我创建了一个新模块,用Git克隆Skeleton模块并将其重命名为“Users”。我添加了控制器来注册新用户,登录和执行CRUD操作。
这是我的模块文件夹结构:
这是我的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 时,会呈现正确的页面。 我有点困惑,我不知道如何解决这个问题。
非常感谢任何帮助。提前谢谢。
答案 0 :(得分:1)
$this->url('user-manager');
的index.phtl文件中,我在$this->url('users/user-manager')
中已更改,现在可以正常工作。
再次感谢!
答案 1 :(得分:0)
我认为问题在于约束和默认值。尝试删除用户管理器路由中的约束,看看会发生什么。