我正在尝试在 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',
),
),
),
),
),
),
),