2012-11-13 53 views
1

我有一個路由器test/view,我想通過一些參數,如test/view/id/123如何在Zend Framework 2中使用路徑傳遞參數?

我不知道如何在zf2路由器中添加這些參數。

'router' => array(
     'routes' => array(
      'test' => array(
       'type' => 'Literal', 
       'options' => array(
        'route' => '/test', 
        'defaults' => array(
         '__NAMESPACE__' => 'test\Controller', 
         'controller' => 'Index', 
         'action'  => 'index', 
        ), 
       ), 
       'may_terminate' => true, 
       'child_routes' => array(
        'view' => array(
         'type' => 'Literal', 
         'options' => array(
          'route' => '/view', 
          'defaults' => array(
           'controller' => 'Index', 
           'action'  => 'view', 
          ), 
         ), 
        ), 
       ), 
      ), 
     ), 
), 

我設置view作爲子路線,但不知道在哪裏添加這些參數。

我試過'route' => '/view/:id/:value'

'defaults' => array(
    'controller' => 'Index', 
    'action'  => 'view', 
    'id'   => 'value', 
) 

,但他們似乎並不管用

我試圖理解它是如何工作的。

有什麼想法?感謝

回答

5
'router' => array(
    'routes' => array(
     'test-view' => array(
      'type' => 'segment', 
      'options' => array(
       'route' => '/test/view/:testId[/]', 
       'constraints' => array(
        'testId'  => '[0-9]+', 
       ), 
       'defaults' => array(
        'controller' => 'Test\Controller\Index', 
        'action' => 'view' 
       ), 
      ), 
     ), 

在你ControllerAction那麼你可以得到的參數「testId」使用:

$this->params('testId'); 

BTW:以上航線爲您提供了這樣一個網址:/test/view/123 - 我想你可以擺脫的「id」參數。

如果要創建指向某種頁面的鏈接,可以在其中一個視圖中使用$this->url('test-view', array('testId' => 123))

+0

奇怪,它不工作,我仍然得到404 – Patrioticcow

+0

你使用骨架的應用程序?你需要一個「測試」模塊。等等,我會爲你安排一個。 – pebbo

+0

我有一個測試模塊,視圖操作和module.config,是的 – Patrioticcow