2

我有一个问题,我找不到如何从 json 中的 php 获取分页的方法,这是我的代码:

            $type_name = substr(trim($_POST['type']),1);

            $criteria = new CDbCriteria();
            $count=ImageLibrary::model()->count($criteria);
            $pages=new CPagination($count);


            $pages->pageSize=10;
            $pages->applyLimit($criteria);
            $criteria->select = 'name,type';
            $criteria->condition = 'type=:type';
            $criteria->params = array('type' => $type_name);
            $model = ImageLibrary::model()->findAll($criteria);

            foreach( $model as $key => $data){
                $json_data[$key]['name'] = $data->name;
                $json_data[$key]['type'] = $data->type;
            }

            echo CJSON::encode($json_data);

我正在获取数据,但我不知道如何将 json 带入 :(,或者如果存在另一种方式。谢谢您的帮助!!!!

4

1 回答 1

0

不必那样做。您可以渲染出包含 Pagination 小部件的整个 HTML 结果。

我的一个项目的示例:

$count = AdStavke::model()->count($criteria);
$pages = new CPagination($count);

$pages->pageSize = 20;
$pages->applyLimit($criteria);

$stavke = AdStavke::model()->findAll($criteria);

if (sizeof($stavke)) {
    $response = array(
        'success' => true,
        'html' => $this->renderPartial($types[$type]['view_file'], array(
            'model' => $stavke,
            'pages' => $pages,
            'nezaduzene' => true,
                ), true),
    );
}

在视图中:

<div id="appTable">
    <table class="tablesorter stavke zaduzene table table-striped table-hover table-condensed table-bordered">
        <thead>
            <tr class="descriptioner">
                <th colspan="9">
                    <div class="pull-left">
                        Lista <span class="label label-warning" style="font-size: 14px;">zaduženih</span> stavki u: <?= $model[0]->stavka->vrsta->naziv; ?>
                    </div>
                    <div class="pull-right">
                        <?php
                        $this->widget('CLinkPager', array(
                            'htmlOptions' => array(
                                'class' => 'yiiPager yiiPager_2',
                            ),
                            'pages' => $pages,
                            'header' => false,
                            'firstPageLabel' => 'Prva',
                            'lastPageLabel' => 'Zadnja',
                            'prevPageLabel' => 'Prethodna',
                            'nextPageLabel' => 'Sljedeća',
                        ));
                        ?>
                    </div>
                    <div class="clearfix"></div>
                </th>
            </tr>
        </thead>
    </table>
</div>

您可以发送一个简单的 AJAX 请求来使用Updated-Pagination更改您的条目视图:

$.post('/aplikacije/ajax/fetch', {
    submit: true,
    type: 'stanja',
    seek: mapped.data('stanje'),
    vrsta_id: $('.vrstex.active').first().data('vid'),
    q: _mapped.val()
}, function(data) {
    if(data.success) {
        $('#appTable').html( data.html );
    }
}, 'json');

注意:此代码源自我的一个实时项目,从中您可以了解如何使用 AJAX 进行 Yii 分页。

于 2013-07-19T13:16:18.437 回答