Zend 2.0查询路由

时间:2012-12-08 20:45:18

标签: php zend-framework2 zend-framework-mvc zend-framework-routing

你好我正在使用ZendFramework 2.0,我想用查询参数设置路由。例如,我希望这样的东西能够起作用。

  

我想要匹配 ... / foo?my_param = number 的路线,但不会   匹配 ... / foo ... / foo?not_allowed_pa​​ram = value

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

另一方面,我希望能够使用 $ this-> url('... / foo',array('my_param'=> 3))

Ofc认为这不起作用。我希望你知道我期望的行为。

感谢您的帮助!

1 个答案:

答案 0 :(得分: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',
                ),
            ),
        ),

方括号中的细分被视为可选。