2015-01-21 3 views

ответ

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

Это производит URL как ?filter[]=value1&filter[]=value2, но вы можете получить к нему доступ непосредственно как массив :

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

жаль, что мне нужно, как вам не с получат :) я стараюсь использовать свой маршрут сегмента и ребенок с групповым символом только для фильтров я получить URL, как:/ро/computere/laptopuri // сортировки прет/DIR-убывание/стр-4/контроллер: Каталог% 5CController% 5CCatalog/Действие: detalii/param1: значение1. Мне не нужно, может быть, массив, но иметь переменное имя параметра, которому я не знаю их имени до – user3143015

+0

@ user3143015: Не используйте подстановочный маршрут, он устарел для проблем безопасности (http://framework.zend.com/manual /current/en/modules/zend.mvc.routing.html#zend-mvc-router-http-wildcard-deprecated) - то же, что и маршрут запроса (http://framework.zend.com/security/advisory/ZF2013-01). – lku

+0

вашим первым решением было взорвать фактические параметры, но что, когда я должен воссоздать еще один url с этим параметром уже в url? – user3143015

Смежные вопросы