1

だから、非常に長い時間と多くの面倒なアイブの後、ついに私のajaxページネーションが機能するようになりました(一種の)

今私のhtmlは次のようになります:

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

<div class="portlet box green Report index" id="content">
<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">
            <table class="table table-striped table-bordered table-hover table-full-width"
                <thead>
                <tr>
                    <th><?php echo $this->Paginator->sort('Offer.name','Offer'); ?></th>
                    <th><?php echo $this->Paginator->sort('Stat.clicks','Clicks'); ?></th>
                    <th><?php echo $this->Paginator->sort('Stat.conversions','Conversion'); ?></th>
                    <th><?php echo $this->Paginator->sort('Stat.payout','Payout'); ?></th>
                    <th><?php echo $this->Paginator->sort('Stat.ltr', 'What-isThis?'); ?></th>
                    <th><?php echo $this->Paginator->sort('Stat.cpc','Expected E-CPC'); ?></th>
                </tr>
                </thead>
                <tbody class="report_data">
                <?php foreach ($table['Report']['data']['data'] as $res): ?>
                    <tr>
                        <td><?php echo h($res['Offer']['name']); ?>&nbsp;</td>
                        <td><?php echo h($res['Stat']['clicks']); ?>&nbsp;</td>
                        <td><?php echo h($res['Stat']['conversions']); ?>&nbsp;</td>
                        <td><?php echo h($res['Stat']['payout']); ?>&nbsp;</td>
                        <td><?php echo h($res['Stat']['ltr']); ?>&nbsp;</td>
                        <td><?php echo h($res['Stat']['cpc']); ?>&nbsp;</td>
                    </tr>
                <?php endforeach; ?>
                </tbody>
            <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 ?>
            </table>
            </ul>
        </div>
    </div>
</div>
<?php echo $this->Js->writeBuffer(); ?>

悲しいことに、私はあなたに写真を見せることができません (それは私が評判に欠けていると言っています) しかし、私がページネーションを押すと、サイトのコンテンツが div ブロックに入れられ、ビューがめちゃくちゃになることを意味しているようです!

なぜこれを行っているのか、どうすれば修正できるのか、誰か教えてもらえますか?

id='content' を別の div または table ブロックに移動しようとしましたが、成功しませんでした

ケーキ バージョン 2.3

マイ インデックス アクション

    public function index()
{
    if($this->request->is('ajax'))
    {
        $this->layout('ajax');
    }else{

    $this->layout = 'client_layout';
    }
    $startDate = $this->request->data['startDateTime'];
    $endDate = $this->request->data['endDateTime'];
    if($startDate == null || $startDate == '' ){
        $startDate = date('y-m-d');
        $endDate = date('y-m-d');
    }
    array_push($this->paginate['conditions']['Stat.date']['values'], $startDate, $endDate);
    $this->set('table', $this->paginate());
}

アップデート

さて、コントローラーに次を追加しました:

        if ($this->RequestHandler->isAjax()) {
        $this->autoLayout = true;
        $this->autoRender = true;
        $this->layout = 'ajax';
    }else{
    $this->layout = 'client_layout';
    }

これは助けになりましたが、本来あるべき 100% ではありません。テーブルの上に div ブロックを追加しています。これは、次のような HTML です。

    <div id="updateTable">
<div class="portlet box red"> <-- VERY BAD!!
<div class="portlet-title">
<div class="portlet-body">
</div>
<div id="updateTable">

IDもupdateTableに変更したことに注意してください

4

2 に答える 2

0

HTML マークアップが無効です。テーブル要素を閉じるのが遅すぎます。移動するだけです

</table> 

<ul>

最後のdivタグを削除します。

私の知る限り、ajax-requests を手動でチェックする必要はありません。RequestHandler がコンポーネントに含まれている場合、対応するレイアウトが自動的に選択されます。

以下を AppController に追加するだけです。

public $components = array('RequestHandler'); 
于 2013-09-04T10:53:43.970 に答える
0

ページネーションリンクが送信されるコントローラーアクションで、リクエストがajaxであるかどうかを確認します。リクエストが ajax 経由で行われた場合、コントローラーにヘッダーやその他の CSS コードを追加しないように指示します。

if($this->request->is('ajax'))
{ 
      $this->layout('ajax');
}
于 2013-09-04T08:41:47.173 に答える