次のように、ルートを使用してクエリ文字列でURLを作成しようとしています:
$this->url('users') -> /users
$this->url('users', ['sort' => 'desc']) -> /users?sort=desc
ただし、これは機能していないようです(2番目のヘルパーは実際には/users
を出力します)。これによると 非公式、古いドキュメント ルート名に/query
を追加してこれを行う方法がかつてありましたが、これはルートが見つからないという例外を与えます。
これは、現在のURLヘルパーを使用して実行できますか?
次のように、ユーザールートの子ルートを作成できます。
_'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.1.4以降、ユーザーエラーが発生します
クエリルートはZF 2.1.4で非推奨になりました。代わりに、HTTPルーターのアセンブル方法の「クエリ」オプションを使用してください
使用例:
$name = 'index/article';
$params = ['article_id' => $articleId];
$options = [
'query' => ['param' => 'value'],
];
$this->url($name, $params, $options);
これは、現在のURLビューヘルパーを使用して実行できます。
$this->url('users', [], array('query' => array('sort' => 'desc')))
クエリ文字列の子ルートを設定する必要はありません。 「ユーザー」のルート設定がある限り、コントローラで「ソート」パラメータを探し、必要な場所で使用できます。