Как добавить параметры запроса в помощнике просмотра URL-адреса ZF2/ZF3
Я пытаюсь создать URL-адрес с строкой запроса с использованием маршрута, например:
$this->url('users') -> /users
$this->url('users', ['sort' => 'desc']) -> /users?sort=desc
Однако это не работает (второй помощник действительно выводит /users
). В соответствии с этой неофициальной, устаревшей документацией когда-то был способ сделать это, добавив /query
к имени маршрута, однако это дает маршрут - не Исключенное исключение.
Можно ли это сделать с помощью текущего помощника URL?
Ответы
Ответ 1
Вы можете создать дочерний маршрут для своего пользователя следующим образом:
'users' => array(
'type' => 'Literal',
'options' => array(
'route' => '/users',
'defaults' => array(
'__NAMESPACE__' => 'User\Controller',
'controller' => 'Index',
'action' => 'list',
),
),
'may_terminate' => true,
'child_routes' => array(
'query' => array(
'type' => 'Query',
),
),
),
тогда вы можете собрать $this->url('users/query', array('sort' => 'desc'))
.
Не забудьте установить may_terminate
в true
!
Ответ 2
Начиная с версии 2.1.4 вы сталкиваетесь с ошибкой пользователя
маршрут запроса, устаревший с ZF 2.1.4; вместо этого используйте параметр "запрос" HTTP-маршрутизатора\метод сборки
Пример использования:
$name = 'index/article';
$params = ['article_id' => $articleId];
$options = [
'query' => ['param' => 'value'],
];
$this->url($name, $params, $options);
Ответ 3
Это можно сделать с помощью текущего помощника просмотра URL да.
$this->url('users', [], array('query' => array('sort' => 'desc')))
Вам не нужно настраивать дочерние маршруты строки запроса. Пока у вас есть настройка маршрута для "пользователей", вы можете просто искать параметр "sort" в своем контроллере и использовать там, где это необходимо.