Подтвердить что ты не робот

Как добавить параметры запроса в помощнике просмотра URL-адреса ZF2/ZF3

Я пытаюсь создать URL-адрес с строкой запроса с использованием маршрута, например:

$this->url('users') -> /users
$this->url('users', ['sort' => 'desc']) -> /users?sort=desc

Однако это не работает (второй помощник действительно выводит /users). В соответствии с этой неофициальной, устаревшей документацией когда-то был способ сделать это, добавив /query к имени маршрута, однако это дает маршрут - не Исключенное исключение.

Можно ли это сделать с помощью текущего помощника URL?

4b9b3361

Ответ 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" в своем контроллере и использовать там, где это необходимо.