zf2路由param就像GET数组一样

时间:2015-01-21 20:16:41

标签: zend-framework2

请有人告诉我如何实施zf2路线以获得这样的路线 器/过滤器/ VALUE1 / VALUE2  并收到这样的数组:

filter = [
   value1,
   value2,
]

1 个答案:

答案 0 :(得分:0)

如果您需要此URL /filter/value1/value2,则可以使用通配符约束定义段路由:

    'filter' => [
        'type' => \Zend\Mvc\Router\Http\Segment::class,
        'options' => [
            'route' => '/filter/:filter',
            'defaults' => [
                'controller' => 'Application\Controller\Index',
                'action' => 'index',
            ],
            'constraints' => [
                'filter' => '(.)+',
            ],
        ],
    ],

然后在控制器中,您可以将过滤器变量作为数组访问,例如:

$filter = $this->params('filter', []);
$filter = explode('/', trim($filter, '/'));

但是如果您的主要要求是过滤变量作为数组而不是URL,则只需使用数组作为查询参数:

    // in controller or template:
    $this->url()->fromRoute('filter', [], [
        'query' => [
            'filter' => [
                'value1',
                'value2',
            ],
        ],
    ]);

这会生成类似?filter[]=value1&filter[]=value2的网址,但您可以像数组一样直接访问它:

    // in controller:
    $filter = $this->params()->fromQuery('filter');