I'm attempting to create a url with a query string using a route, like so:
$this->url('users') -> /users
$this->url('users', ['sort' => 'desc']) -> /users?sort=desc
However this doesn't seem to work (the second helper actually outputs /users
). According to this unofficial, out-of-date documentation there was once a way to do this by appending /query
to the route name, however this gives a route-not-found exception.
Can this be done using the current url helper?
You can create a child route for your users route like this:
'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',
),
),
),
then you can assemble $this->url('users/query', array('sort' => 'desc'))
.
Don't forget to set may_terminate
to true
!