我正在爲分頁而苦苦掙扎。 我想使用默認功能。 問題是,分頁按鈕(數字,上一頁,下一頁)的鏈接不起作用。 我不知道如何將URL中的「page:2」傳遞給paginator,讓他知道他必須顯示/呈現下一個5結果的表格。 例如:我點擊頁面2上的「2」,網站將被刷新,但根本沒有顯示結果表。CakePHP分頁顯示結果問題
其他信息: 輸入字段的URL位於cakephp/Posts/index。當我點擊一個分頁按鈕(例如prev)時,分頁程序會轉到cakephp/Posts/index/page:2。
在這裏,你得到PostsController代碼:
class PostsController extends AppController {
var $name = 'Posts';
public $helpers = array('Html', 'Form', 'Js', 'Paginator');
public $components = array('RequestHandler');
public $paginate = array(
'limit' => 5,
'maxLimit' => 50,
'order' => array(
'Post.INCOME' => 'asc',
),
);
function index() {
//debug($this->request->data);
//var_dump($this->params);
if(!empty($this->request->data['ajaxSearchAll'])){
if($this->RequestHandler->isAjax()){
//$data = $this->Post->find('all', array('conditions' => array('ZIPCODE LIKE' => '%' . $this->data['ajaxSearchAll'] . '%')));
$posts = $this->paginate('Post', array('ZIPCODE LIKE' => '%' . $this->data['ajaxSearchAll'] . '%'));
//$this->set('posts', $data);
$this->set(compact('posts'));
$this->render('SearchAll', 'ajax');
}
}
/// GOES ON WITH IRRELEVANT STUFF ///
下圖顯示了「search_all.ctp」的視圖文件代碼(調試轉儲顯示了恰當的陣列應該如何):
如果你們中的任何人都能解決我的問題,我會非常感激。
更新1: 我給你的
debug($this->request->params['paging']);
它看起來精美絕倫的陣列。我必須用命名參數做些什麼嗎?我什麼也沒找到合適的食譜:-(
array(
'Post' => array(
'page' => (int) 1,
'current' => (int) 5,
'count' => (int) 11,
'prevPage' => false,
'nextPage' => true,
'pageCount' => (int) 3,
'order' => array(
'Post.INCOME' => 'asc'
),
'limit' => (int) 5,
'options' => array(
'conditions' => array()
),
'paramType' => 'named'
)
)
更新2:在index.ctp,阿賈克斯搜索開始的地方的代碼查詢和分頁程序的第一頁是完美的工作,但沒有。該分頁程序的按鈕在所有:
<div id="courierQuery">
<?php echo $this->Form->create(false, array('type' => 'post', 'default' => false)); ?>
<?php echo $this->Form->input('ajaxSearchAll', array('type' => 'text', 'id' => 'ajaxSearchAll', 'name' => 'ajaxSearchAll', 'label' => false, 'placeholder' => 'Bitte PLZ eingeben'))?>
<?php $before = $this->Js->get('#loading')->effect('fadeIn', array('buffer' => False)); ?>
<?php $success = $this->Js->get('#loading')->effect('fadeOut', array('buffer' => False)); ?>
<?php echo $this->Js->get('#ajaxSearchAll')->event('keyup', $this->Js->request(
array('controller'=>'Posts', 'action'=>'index'),
array(
'update'=>'#erfolgreich_ajax',
'before' => $before,
'success' => $success,
'async' => true,
'dataExpression' => true,
'method' => 'post',
'data'=>$this->Js->serializeForm(array('isForm'=>'false', 'inline'=>'true'))
)
)
); ?>
<?php echo $this->Form->end();?>
</div>
/// IRRELEVANT STUFF ///
<div id="loading" style="display: none;">
<div style="float:left;margin-top: 14px"><?php echo $this->Html->image('ajax-loader.gif', array('id' => 'busy-indicator')); ?></div>
<div style="float:left;margin: 22px 0 0 10px;color: #fff"><p>Suche nach Inseraten läuft ...</p></div>
</div>
一開始,你不需要用分頁助手類禁用選項,只生成並輸出環節適當。 – Daniel
謝謝丹尼爾,我改變了這一點。但行爲沒有改變。 – Karl
我可以看到的另一件事 - 如果你在ajax更新之後,你必須在$ this中設置'update'=>'#content''(或類似的)和'evalscripts => true' - > Paginator-> options',然後在所述#content div中包圍search_all.ctp。 – Daniel