J'essaie de créer une URL avec une chaîne de requête en utilisant un itinéraire, comme ceci:
$this->url('users') -> /users
$this->url('users', ['sort' => 'desc']) -> /users?sort=desc
Cependant, cela ne semble pas fonctionner (le deuxième assistant génère en fait /users
). Selon cela documentation non officielle et obsolète il était une fois possible de le faire en ajoutant /query
au nom de la route, mais cela donne une exception de route introuvable.
Cela peut-il être fait en utilisant l'assistant url actuel?
Vous pouvez créer un itinéraire enfant pour l'itinéraire de vos utilisateurs comme ceci:
'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',
),
),
),
alors vous pouvez assembler $this->url('users/query', array('sort' => 'desc'))
.
N'oubliez pas de régler may_terminate
Sur true
!
Depuis la version 2.1.4, vous rencontrez une erreur utilisateur
Route de requête déconseillée à partir de ZF 2.1.4; utilisez plutôt l'option "requête" de la méthode d'assemblage du routeur HTTP
Exemple d'utilisation:
$name = 'index/article';
$params = ['article_id' => $articleId];
$options = [
'query' => ['param' => 'value'],
];
$this->url($name, $params, $options);
Cela peut être fait en utilisant l'assistant de vue URL actuel oui.
$this->url('users', [], array('query' => array('sort' => 'desc')))
Vous n'avez pas besoin de configurer les itinéraires enfants de la chaîne de requête. Tant que vous avez une configuration d'itinéraire pour les "utilisateurs", vous pouvez simplement rechercher le paramètre "trier" dans votre contrôleur et l'utiliser si nécessaire.