如何使用分页和长变量查询字符串修复路由

时间:2012-09-10 13:30:57

标签: symfony1 symfony-1.4

我有一个问题从第一页到第二页,第三页,第四页等...当使用分页以及长而可变的查询字符串时。我怀疑它是一个路由问题。我正在使用用户通过一系列下拉菜单选择的自定义查询。生成的url非常长,包含所有post变量。

例如,工作的第一页网址看起来像(这里的帖子变量用字母表示):

project/web/s/search_results/t/u/v/w/x/y/z  

...和点击第2页时的非工作第二页网址:

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):  ?>  

1 个答案:

答案 0 :(得分:1)

尝试:

 <a href="<?php echo url_for(sfContext::getInstance()->getRouting()->getCurrentInternalUri()) ?>?page=<?php echo $page ?>"><?php echo $page ?></a>