0

我需要一个路由定义(如果可能的话),它将处理两个请求:

第一个是显示列表的前 10 个元素,第二个是显示第二个“页面”以及接下来的 10 个元素。

重要提示:我还想(在视图中):

$this->url(array(), 'list');

创建http://www.exaple.com/list URL,而不是http://www.example.com/list/1

我已经拥有的是:

<list type="Zend_Controller_Router_Route_Regex">
    <route>list(?:/(\d+))?</route>
    <defaults>
        <controller>index</controller>
        <action>list</action>
        <page>1</page>
    </defaults>
    <map>
        <page>1</page>
    </map>
    <reverse>list/%d</reverse>
</list>

它处理这两个请求,但反向创建http://www.example.com/list/1 URL。

如果一条路线不可能 - 处理这种情况的最佳方法是什么?

4

1 回答 1

1

您需要提供 null 作为 page 而不是 1 的默认值,但我认为使用 XML 路由是不可能的,因为 Zend_Config_Xml 不支持null作为特殊值(它将解释为字符串 'null')。

您可以使用标准路由类解决此问题:

<list type="Zend_Controller_Router_Route">
<route>list/:page</route>
    <defaults>
        <controller>index</controller>
        <action>list</action>
        <page>null</page>
    </defaults>
    <reqs>
        <page>\d+</page>
    </reqs>
</list>

这里唯一的怪癖是,如果 URL 中没有页面变量,您将获得字符串值“null”作为页面参数。

如果您要为路由使用 ini 文件,或者在 PHP 中定义它们,您不应该遇到这个问题。

于 2012-05-06T21:39:24.107 回答