Пожалуйста, кто-нибудь может сказать мне, как реализовать ZF2 маршрут, чтобы иметь маршрут как этот /фильтр/value1/value2 и получить массив так:ZF2 маршрут пары, как массив GET
filter = [
value1,
value2,
]
Пожалуйста, кто-нибудь может сказать мне, как реализовать ZF2 маршрут, чтобы иметь маршрут как этот /фильтр/value1/value2 и получить массив так:ZF2 маршрут пары, как массив GET
filter = [
value1,
value2,
]
Если вам нужно именно этот 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');
жаль, что мне нужно, как вам не с получат :) я стараюсь использовать свой маршрут сегмента и ребенок с групповым символом только для фильтров я получить URL, как:/ро/computere/laptopuri // сортировки прет/DIR-убывание/стр-4/контроллер: Каталог% 5CController% 5CCatalog/Действие: detalii/param1: значение1. Мне не нужно, может быть, массив, но иметь переменное имя параметра, которому я не знаю их имени до – user3143015
@ 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
вашим первым решением было взорвать фактические параметры, но что, когда я должен воссоздать еще один url с этим параметром уже в url? – user3143015