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'

知道如何将页面参数放入 URL 中吗?我不能像在标准路线中那样使用通配符,不是吗?

4

2 回答 2

1

您的 Regex 路由没有page参数,因此当 url view-helper 最终Route::assemble()使用您提供的参数调用时,它会忽略您的page值。

想到的两个选择是:

  1. 修改您的正则表达式以包含一个(可能是默认值可选的)page参数
  2. page在查询字符串中管理路由之外的参数。
于 2012-12-17T02:06:56.777 回答
1

除了大卫的建议,您可以更改此路由以使用标准路由类,然后保留通配符选项:

$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 回答