0

您好,我正在使用 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 认为这是行不通的。我希望你明白我期望的行为。

谢谢你的帮助!

4

1 回答 1

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

方括号中的段被认为是可选的。

于 2012-12-09T03:17:19.710 回答