ZendFramework 2 - 如何使用一个路由器规则使所有操作可用?它只允许行动指数

时间:2012-10-30 12:05:59

标签: php zend-framework2 zend-route zend-router

如何使用一个路由器规则允许该控制器内的所有子操作?例如,如下:

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);

1 个答案:

答案 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',
                ),
            ),
        ),
    ),
),
相关问题