2012-10-30 8 views
0

如何使用一個路由器規則允許該控制器內的所有子動作?例如,這如下:ZendFramework 2 - 如何使一個路由器規則可用的所有操作?它只允許動作索引

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

追問:

我怎樣才能讓這個/登錄和/登錄/什麼工作的?

$route = Http\Segment::factory(array(
    'route' => '/login[/:action]', 
    'defaults' => array(
    'controller' => 'Application\Controller\Login', 
    'action' => 'index' 
), 
)); 
$router->addRoute('login', $route, null); 

回答

2

在官方文檔中有一個很好的QuickStart Tutorial。設置您的路線,如下所示,允許多個操作和一個ID參數。請進一步瞭解更多信息,請參閱文檔。

您還可能有興趣在DASPRiDs presentation從ZendCon2012

'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', 
       ), 
      ), 
     ), 
    ), 
), 
+0

module.config.php:您正在使用這個權利?我不是在尋找,我在Module.php bootstrap中使用。 – YumYumYum

+0

module.config.php:路由的概念很耗時,因爲它變成了最大的數組。它殺死更多的時間來調試,但Module.php是調試友好的方法。因此,我選擇了從Bootstrap手動路由的選項,但忽略了module.config.php的路由。 – YumYumYum

+1

完全取決於你,但它並沒有真正改變任何東西:)數組選項也是你必須用於手動調用的選項。而不是使用'Http \ Literal',只需使用'Http \ Segment'。就我個人而言,我只使用來自module.config.php的Literal路由,速度缺點在很小的ms範圍內,所以我根本就不打擾;) – Sam

相關問題