0

私は Zend Framework 1.12 を使用しており、次のルートがあります。

$router->addRoute('item_start',
    new Zend_Controller_Router_Route_Regex(
            '(foo|bar|baz)',
            array(
                'module'        => 'default',
                'controller'    => 'item',
                'action'        => 'start'
            ),
            array(
                1 => 'area'
            ),
            '%s'
        )
);

問題は、「/foo」を呼び出してビューで Url Helper を使用すると、パラメーターが得られないことです。

$this->url(array("page"=>1));
// returns '/foo' (expected '/foo/page/1')

$this->url(array("page"=>1), "item_start", true);
// also returns '/foo'

page-parameter を URL に取得する方法はありますか? 標準ルートのようにワイルドカードは使えませんよね?

4

2 に答える 2

1

David の提案に加えて、このルートを変更して標準のルート クラスを使用し、ワイルドカード オプションを保持することもできます。

$router->addRoute('item_start',
    new Zend_Controller_Router_Route(
            ':area/*',
            array(
                'module'        => 'default',
                'controller'    => 'item',
                'action'        => 'start'
            ),
            array(
                'area' => '(foo|bar|baz)' 
            )
        )
);

// in your view:
echo $this->url(array('area' => 'foo', 'page' => 1), 'item_start');
于 2012-12-17T09:01:30.403 に答える
1

正規表現ルートにはpageパラメーターがないため、url ビューヘルパーがフィードしたパラメーターを使用して呼び出しRoute::assemble()を終了すると、値が無視されますpage

思いつく選択肢は次の2つです。

  1. 正規表現を変更して、(おそらくデフォルト値でオプション)pageパラメーターを含めます
  2. pageクエリ文字列でルート外のパラメーターを管理します。
于 2012-12-17T02:06:56.777 に答える