【发布时间】:2013-10-03 04:42:04
【问题描述】:
我正在尝试在 Zend Framework 2 中进行一些路由,但它不起作用。
骨架应用程序的基础工作正常,所以我在文件 \module\User\config\module.config.php 中添加了一个名为 User 的新模块和以下代码
'controllers' => array(
'invokables' => array(
'User\Controller\User' => 'User\Controller\UserController',
),
),
'router' => array(
'routes' => array(
'login' => array(
'type' => 'Literal',
'options' => array(
'route' => '/login',
'defaults' => array(
'__NAMESPACE__' => 'User\Controller',
'controller' => 'User',
'action' => 'login',
),
),
),
'user_create' => array(
'type' => 'Literal',
'options' => array(
'route' => '/user/create',
'defaults' => array(
'__NAMESPACE__' => 'User\Controller',
'controller' => 'User',
'action' => 'create',
),
),
),
),
),
如果我尝试访问第一条路由 (/login),它可以工作。
但是第二条路由(/user/create)导致错误:
文件:
F:\www\ZendVendas\library\Zend\Mvc\Router\Http\TreeRouteStack.php:313
消息:
Route with name "create" not found
如果我确实创建了一个没有控制器名称的路由,它可以工作:
'create' => array(
'type' => 'Literal',
'options' => array(
'route' => '/create',
'defaults' => array(
'__NAMESPACE__' => 'User\Controller',
'controller' => 'User',
'action' => 'create',
),
),
),
但我希望路由是“/user/create”,而不是“/create”。
我搜索了很多主题,但看不到我的错误在哪里。 感谢任何帮助;)
编辑:根据@Jurian 的建议调整代码
'router' => array(
'routes' => array(
'user' => array(
'type' => 'Literal',
'options' => array(
'route' => '/user',
'defaults' => array(
'controller' => 'User\Controller\User',
'action' => 'profile',
),
),
'child_routes' => array(
'login' => array(
'type' => 'Literal',
'options' => array(
'route' => '/login',
'defaults' => array(
'controller' => 'User\Controller\User',
'action' => 'login',
),
),
),
'create' => array(
'type' => 'Literal',
'options' => array(
'route' => '/create',
'defaults' => array(
'controller' => 'User\Controller\User',
'action' => 'create',
),
),
),
),
),
),
),
【问题讨论】:
标签: php zend-framework2