CakePHP 2.3 でアプリケーションを開発していますが、ページネーションに問題があります。ページネーション リンクをクリックすると、/cab/ServiceDirectory/refine/page:2 (またはこれまでのリンク) がこのサーバーに見つかりませんでした。/cab/ServiceDirectory/refine に移動すると、5 ページあるはずのページネーション リンクが表示されます。コントローラーとビューからページネーション コードを削除すると、表示されるはずのすべての結果が表示されます。
私の ServiceDirectoryResultsController には
public function index() {
$this->ServiceLocation->recursive=0;
}
public function refine ($id=null) (
// All my code to get the ServiceLocations from the DB
$this->paginate->array(
'conditions' => array('ServiceLocation.state' => $states[$state], 'ServiceLocation.solution_categories' => $active_cat),
'limit' => 8,
);
$results = $this->paginate('ServiceLocation');
$this->set('serviceLocation' ,$results);
}
私の見解では、私は持っています
<div class="paging">
<?php
echo $this->Paginator->prev('< ' . __('previous'), array(), null, array('class' => 'prev disabled'));
echo $this->Paginator->numbers(array('separator' => ''));
echo $this->Paginator->next(__('next') . ' >', array(), null, array('class' => 'next disabled'));
?>
</div>
<?php foreach ($serviceLocation as $Location): ?>
// I echo a few things from the $Location array
<?php endforeach; ?>
<div class="paging">
<?php
echo $this->Paginator->prev('< ' . __('previous'), array(), null, array('class' => 'prev disabled'));
echo $this->Paginator->numbers(array('separator' => ''));
echo $this->Paginator->next(__('next') . ' >', array(), null, array('class' => 'next disabled'));
?>
</div>
ページングを使用せずに、すべてを検索してそれをビューに送信しなければ、期待する 40 の結果が表示されます。
ページネーションを使用すると、ページネーションのリンクが表示され、それらの上にカーソルを置くと、URL /cab/ServiceDirectoryResults/refine/page:2 または page:3 または page:4 または page:5 が表示されます
:pageX が付いたこれらのリンクのいずれかをクリックすると、エラーが発生します
エラー: 要求されたアドレス '/cab/ServiceDirectoryResults/refine/page:2 は、このサーバーで見つかりませんでした'
私は CakePHP のページングについて多くのことを読みましたが、この動作の理由を見つけることができません。このエラーをデバッグするためにたどる理由、考えられる解決策、またはパスを誰かが提案できますか?
よろしく
リチャード
エラーレベルを確認したところ、すでにレベル2に設定されていました
エラーログの最後のエントリは次のとおりです
2013-05-22 17:09:28 Error: [NotFoundException] Not Found
Request URL: /cab/ServiceDirectoryResults/refine/page:2
Stack Trace:
#0 /var/www/html/cab/lib/Cake/Controller/Controller.php(1074): PaginatorComponent->paginate('ServiceLocation', Array, Array)
#1 /var/www/html/cab/app/Controller/ServiceDirectoryResultsController.php(381): Controller->paginate('ServiceLocation')
#2 [internal function]: ServiceDirectoryResultsController->refine()
#3 /var/www/html/cab/lib/Cake/Controller/Controller.php(486): ReflectionMethod->invokeArgs(Object(ServiceDirectoryResultsController), Array)
#4 /var/www/html/cab/lib/Cake/Routing/Dispatcher.php(187): Controller->invokeAction(Object(CakeRequest))
#5 /var/www/html/cab/lib/Cake/Routing/Dispatcher.php(162): Dispatcher->_invoke(Object(ServiceDirectoryResultsController), Object(CakeRequest), Object(CakeResponse))
#6 /var/www/html/cab/app/webroot/index.php(109): Dispatcher- >dispatch(Object(CakeRequest), Object(CakeResponse))
#7 {main}
それが役立つことを願っています