请任何人都可以告诉我如何实现 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');