21

次のように、ルートを使用してクエリ文字列を使用してURLを作成しようとしています。

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

ただし、これは機能していないようです(2番目のヘルパーが実際に出力します/users)。この非公式の古いドキュメントによると、ルート名に追加することでこれを行う方法がかつてありましたが、これにより/queryルートが見つからないという例外が発生します。

これは、現在のURLヘルパーを使用して実行できますか?

4

3 に答える 3

59

バージョン2.1.4以降、ユーザーエラーが発生します

ZF2.1.4で廃止されたクエリルート。代わりに、HTTPルーターの組み立て方法の「クエリ」オプションを使用してください

使用例:

$name    = 'index/article';
$params  = ['article_id' => $articleId];
$options = [
        'query' => ['param' => 'value'], 
    ];
$this->url($name, $params, $options);
于 2013-03-14T23:50:52.630 に答える
11

これは、現在のURLビューヘルパーyesを使用して実行できます。

$this->url('users', [], array('query' => array('sort' => 'desc')))

クエリ文字列の子ルートを設定する必要はありません。'users'のルート設定がある限り、コントローラーで' sort'パラメーターを検索し、必要に応じて使用できます。

于 2015-05-22T16:10:13.497 に答える
10

次のように、ユーザールートの子ルートを作成できます。

'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

于 2012-10-08T18:22:59.093 に答える