zf2 路由参数,如 GET 数组



请任何人都可以告诉我如何实现 zf2 路由以获得这样的路由/过滤器/值 1/值 2 并接收如下数组:

filter = [
   value1,
   value2,
]

如果你需要这个 URL /filter/value1/value2 ,你可以用通配符约束定义分段路由:

    'filter' => [
        'type' => ZendMvcRouterHttpSegment::class,
        'options' => [
            'route' => '/filter/:filter',
            'defaults' => [
                'controller' => 'ApplicationControllerIndex',
                '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 的 url,但您可以像数组一样直接访问它:

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

最新更新