当使用分页以及长且可变的查询字符串时,我从第一页到第二页、第三页、第四页等时遇到问题。我怀疑它是一个路由问题。我正在使用用户通过一系列下拉菜单选择的自定义查询。结果 url 很长,其中包含所有 post 变量。
例如,工作的首页 url 看起来像(这里用字母表示的 post 变量):
project/web/s/search_results/t/u/v/w/x/y/z
...以及单击第 2 页时无效的第 2 页 url:
project/web/s/search_results?page=2
第二页遵循路由规则。如前所述,第二页无法从寻呼机菜单中单击。但是如果我手动输入:
project/web/s/search_results/t/u/v/w/x/y/z?page=2
- 它确实有效。重要的代码行如下:
路由规则:
search_results:
url: /s/search_results
param: { module: s, action: search_results }
url_for 分页助手:
<?php foreach ($pager->getLinks() as $page): ?>
<?php if ($page == $pager->getPage()): ?>
<?php echo $page ?>
<?php else: ?>
<a href="<?php echo url_for('@search_results', $object) ?>?page=<?php echo $page ?>"><?php echo $page ?></a>
<?php endif; ?>
<?php endforeach; ?>
和错误信息:
404 | Not Found | sfError404Exception
Unable to find the s object with the following parameters "array ( 'id' => 'search_results', 'sf_format' => 'html',)").
我应该为路由规则使用集合吗?
编辑: url_for 助手中引用的对象:
<?php foreach ($pager->getResults() as $o => $object): ?>