0

長くて可変のクエリ文字列と一緒にページネーションを使用すると、1 ページから 2 ページ、3 ページ、4 ページなどに移動する際に問題が発生します。ルーティングの問題だと思います。ユーザーが一連のドロップダウン メニューで選択するカスタム クエリを使用しています。結果の URL は非常に長く、すべての投稿変数が含まれています。

たとえば、実際の最初のページの URL は次のようになります (投稿変数は文字で表されています)。

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

...そして、ページ 2 がクリックされたときの非稼働の 2 ページ目の URL:

project/web/s/search_results?page=2

2 ページ目はルーティング ルールに従っています。前述のように、ページ 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):  ?>  
4

1 に答える 1

1

試す:

 <a href="<?php echo url_for(sfContext::getInstance()->getRouting()->getCurrentInternalUri()) ?>?page=<?php echo $page ?>"><?php echo $page ?></a>
于 2012-09-10T19:33:14.230 に答える