请原谅我对ZF2的新意见。 我想从顶层路由到控制器...
在ZF2 Skeleton中,它的设置使得在应用之后路线被分段如下:
http://www.example.com/application[/:controller[/:action]]
但我不想通过申请路径去这样的控制器:
http://www.example.com/ [:控制器[/:动作]]
我进行了广泛的搜索,但却无法让它发挥作用。 我的module.config.php设置如下:
/* in module.config.php */
'router' => array(
'routes' => array(
'home' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/',
'defaults' => array(
'__NAMESPACE__' => 'Application\Controller',
'controller' => 'Index',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array(
'default' => array(
'type' => 'Segment',
'options' => array(
'route' => '/[:controller[/:action]]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
),
),
),
),
),
),
),
'controllers' => array(
'invokables' => array(
'Application\Controller\Index' => 'Application\Controller\IndexController',
'Application\Controller\Login' => 'Application\Controller\LoginController',
),
),
如果我浏览到http://www.example.com/login,则表示"请求的网址无法与路由匹配。"我想我错过了基本概念...... =(
答案 0 :(得分:1)
子路由连接到父路由。这意味着最终您要定义以下可能的路线:
http://example.com//:controller/:action
注意双浸正斜线。如果所有子路由参数都是可选的并且名称空间没有变化,那么将它们定义为child_route是没有意义的,只会使它最终变慢。
答案 1 :(得分:0)
在Sam的指导下,我能够弄清楚:
'router' => array(
'routes' => array(
'home' => array(
'type' => 'Segment',
'options' => array(
'route' => '/[:controller[/:action]]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
'__NAMESPACE__' => 'Application\Controller',
'controller' => 'Index',
'action' => 'index',
),
),
),
),
),