0

你好,我正在使用ZendFramework 2.0,我想用查詢參數設置路由。例如,我希望像這樣的工作。Zend 2.0查詢路由

我想要的路線,將匹配... /富?my_param =號但不會 比賽... /富... /富?not_allowed_pa​​ram =值

'type' => 'Literal', 
'options' => array(
    'route' => 'foo', 
    'defaults' => ...// Route to some error handler 
    'may_terminate' => true, 
    'child_routes' => array(
     'query' => array(
      // there is some query so route to my action 
      'type' => 'Query', 
      'options' => array(
       'defaults' => array(
        'controller' => 'index', 
        'action' => 'fooAction', 
       ), 
      ), 
     ), 
    ), 
), 

在另一邊我希望能夠使用$這 - > URL( '... /富',陣列( 'my_param'=> 3))

Ofc,這不起作用。我希望你明白我期望的行爲。

感謝您的幫助!

+1

你寧願要設置'segment'類型的路由併爲params設置特定的約束。除此之外,Parameter-Validation是您的控制器任務。 – Sam

回答

1

你的答案建議使用GET參數。如果變量已通過,您可以檢查控制器。

如果你想通過路由器(如Sam註釋)那樣做,你可以設置一個段式路由器。這是在此鏈接解釋說: http://framework.zend.com/manual/2.0/en/modules/zend.mvc.routing.html

的這怎麼會看一個示例如下所示:在方括號

'YourName' => array(
      'type' => 'segment', 
      'options' => array(
       'route' => '/property/search[/:action]', 
       'constraints' => array(
        'controller'=>'[a-zA-Z][a-zA-Z0-9_-]*',    
        'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
       ), 
       'defaults' => array(
        'controller' => 'Module\Controller\Controller', 
        'action' => 'index', 
       ), 
      ), 
     ), 

段被認爲是可選的。