2013-09-03 2 views
1

У меня есть таблица, где я хочу использовать разбивку на страницы, мои данные таблицы заполняются Ajax.Cakephp Ajax pagination links не работает

Это таблица им работать:

<div class="portlet box green Report index"> 
    <div class="portlet-title"> 
     <div class="caption"><i class="icon-globe"></i>Report Summary</div> 
     <div class="tools"> 
      <a href="javascript:;" class="collapse"></a> 
     </div> 
    </div> 
    <div class="portlet-body"> 
    <div id="content"> 
     <table class="table table-striped table-bordered table-hover table-full-width" id="sample_1"> 
      <thead> 
      <tr id='content2'> 
       <?php //echo $content_for_layout; ?> 
       <th><?php echo $this->Paginator->sort('name); ?></th> 
       <th><?php echo $this->Paginator->sort('clicks); ?></th> 
       <th><?php echo $this->Paginator->sort('conversions'); ?></th> 
       <th><?php echo $this->Paginator->sort('payout'); ?></th> 
       <th><?php echo $this->Paginator->sort('ltr'); ?></th> 
       <th><?php echo $this->Paginator->sort('cpc'); ?></th> 
      </tr> 
      </thead> 
      <tbody class="report_data"> 
      </tbody> 
     </table> 
    </div> 
    </div> 
</div> 

На вершине мой взгляд, у меня есть следующие:

$this->Paginator->options(array(
    'update' => '#content2', 
    'evalScripts' => true, 
)); 

И в мой контроллер я запомнила иметь следующие хелперы и компоненты :

public $components = array('RequestHandler'); 

public $helpers = array('Js' => array('Jquery'), 'Paginator'); 

И в конце моего зрения я добавил:

<?php echo $this->Js->writeBuffer(); ?> 

Теперь всякий раз, когда я нажимаю один из таблицы связывает перезагружается сайта НО есть две основные проблемы:

  1. Данные, посылаемые обратно в постраничной навигации не содержит своего рода, ни заказ (ака сайт поясню только перезарядка)

  2. рендер сайта Мессинг (это небольшая проблема, но все еще очень раздражает)

Может ли кто-нибудь сказать мне, что я делаю неправильно?

торт версия 2,3

Мои Cntroller

class ReportsController extends AppController 
{ 
    public $name = 'Reports'; 

     public $components = array('BloglicHelper', 'RequestHandler', 'HasOffers'); 

     public $helpers = array('Js' => array('Jquery'), 'Paginator'); 
     public $paginate = array(
     'fields' => array(
     'Stat.clicks' 
     ,'Offer.name' 
     ,'Stat.currency' 
     ,'Stat.conversions' 
     ,'Stat.payout' 
     ,'Stat.ltr' 
     ,'Stat.cpc' 
     ,'Stat.affiliate_id') 

    ,'conditions' => array( 'Stat.affiliate_id' => array(
      'conditional' => "EQUAL_TO", 
      'values' => array(1002) 
     ) 

     , 'Stat.date' => array(
       'conditional' => 'BETWEEN' 
      , 'values' => array(
       ) 
      ), 
     ), 
     'group' =>array('Offer.name'), 
     'Method' => 'getStats', 
     'totals' => true 

    ); 
    public function index(){ 
     $this->layout = 'client_layout'; 
    } 

    public function ajax_index(){ 
     if ($this->RequestHandler->isAjax()) 
     { 
      $this->autoLayout = false; 
      $this->autoRender = false; 
      $this->layout = 'ajax'; 
     } 

     //request selected dates 
     $startDate = $this->request->data['startDateTime']; 
     $endDate = $this->request->data['endDateTime']; 

     array_push($this->paginate['conditions']['Stat.date']['values'], $startDate, $endDate); 
; 

     $finalData = array('table' => $this->paginate()); 
     print json_encode($finalData); 

    } 

} 
+0

Какую версию тэка вы используете? –

+0

im using Cake 2.3 –

+0

'> sort ('name); ? 'это опечатка? вам не хватает цитаты 'sort ('clicks); ? 'здесь тоже – pleasedontbelong

ответ

4

Добавьте эту строку в верхней части файла просмотра.

$this->Paginator->options(array(
    'update' => '#content', 
    'evalScripts' => true, 
)); 

Здесь вам необходимо обновить всю таблицу вместо только одной строки т.е. #content2

<div class="portlet box green Report index"> 
    <div class="portlet-title"> 
     <div class="caption"><i class="icon-globe"></i>Report Summary</div> 
     <div class="tools"> 
      <a href="javascript:;" class="collapse"></a> 
     </div> 
    </div> 
    <div class="portlet-body"> 
     <div id="content"> 
      <table class="table table-striped table-bordered table-hover table-full-width" id="sample_1"> 
       <thead> 
        <tr id='content2'> 
         <?php //echo $content_for_layout; ?> 
         <th><?php echo $this->Paginator->sort('name'); ?></th> 
         <th><?php echo $this->Paginator->sort('clicks'); ?></th> 
         <th><?php echo $this->Paginator->sort('conversions'); ?></th> 
         <th><?php echo $this->Paginator->sort('payout'); ?></th> 
         <th><?php echo $this->Paginator->sort('ltr'); ?></th> 
         <th><?php echo $this->Paginator->sort('cpc'); ?></th> 
        </tr> 
       </thead> 
       <tbody class="report_data"> 
       </tbody> 
      </table> 
      <ul> 
       <?php if ($this->Paginator->hasPrev()): ?> 
        <li><?php echo $this->Paginator->first(__('First')) ?></li> 
        <li><?php echo $this->Paginator->prev(__('Prev'), array(), null, array('class' => 'prev disabled')) ?></li> 
        <?php 
       endif; 

       echo $this->Paginator->numbers(array('currentTag' => 'span', 'currentClass' => 'active', 
        'separator' => false, 'tag' => 'li', 'modulus' => 5)); 

       if ($this->Paginator->hasNext()): 
        ?> 
        <li><?php echo $this->Paginator->next(__('Next'), array(), null, array('class' => 'next disabled')) ?></li> 
        <li><?php echo $this->Paginator->last(__('Last')) ?></li> 
       <?php endif ?> 
      </ul> 
      <?php echo $this->Js->writeBuffer(); ?> 
     </div> 
    </div> 
</div> 

, имеющий некоторые ошибки в

<th><?php echo $this->Paginator->sort('name); ?></th> 
<th><?php echo $this->Paginator->sort('clicks); ?></th> 

эти две линии

<?php echo $this->Js->writeBuffer(); ?> должны быть внутри элемента, который вы хотите обновить. то есть здесь #content

вы можете получить более подробную информацию .

+0

Ive проверил и выполнил документацию, и я очень рад за вашу помощь, но, к сожалению, это ничего не изменило: S –

+0

вы можете показать мне какой-либо вывод, например html и т. д. –

+0

когда я нажимаю один из них, он просто просто перезагружает страницу.И ссылка Html, когда я наводил ссылки, не отличается от сайта, где я есть. –

Смежные вопросы