如何使用一个路由器规则允许该控制器内的所有子操作?例如,如下:
visit: site/login - works only
site/login/forgetpassword - does not work
site/login/remmeberme - does not work
示例:
$router = $e->getApplication()->getServiceManager()->get('router');
$route = Http\Literal::factory(array(
'route' => '/login',
'defaults' => array(
'controller' => 'Application\Controller\Login',
'action' => 'index'
),
));
$router->addRoute('login', $route, null);
跟进:
我怎样才能使/ login和/ login / any有效?
$route = Http\Segment::factory(array(
'route' => '/login[/:action]',
'defaults' => array(
'controller' => 'Application\Controller\Login',
'action' => 'index'
),
));
$router->addRoute('login', $route, null);
答案 0 :(得分:2)
官方文档中提供了很好的QuickStart Tutorial。设置如下所示的路径以允许多个操作和ID参数。有关详细信息,请查看文档。
您可能也对ZendCon2012的DASPRiDs presentation感兴趣
'router' => array(
'routes' => array(
'album' => array(
'type' => 'segment',
'options' => array(
'route' => '/album[/:action][/:id]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'Album\Controller\Album',
'action' => 'index',
),
),
),
),
),