-1

私はyiiのページネーションを行おうとしており、このに従いました。しかし、それは私にはうまくいかないようです。文字列値の配列をページ分割したい。以下は私が持っているものです:

コントローラ

$location = $this->location($_SERVER['SERVER_NAME']);
$files = $this->getFiles("/data/scan/invoice");
$page = (isset($_GET['page']) ? $_GET['page'] : 1);
$item_count = count($files);        
$pages = new CPagination($item_count);
$pages->setPageSize(Yii::app()->params['listPerPage']);
$criteria = new CDbCriteria();

$pages->applyLimit($criteria);  // the trick is here!       

$this->render('index',array(
            "location"=>$location,
            "files"=>$files,
            'item_count'=>$item_count,              
            'page_size'=>Yii::app()->params['listPerPage'],
            'pages'=>$pages
));

見る

<div id="main">
    <table>
        <?php foreach($files as $q): ?>

        <form>
            <tr>
                <td rowspan=2>
                    <div>
                        <object data="<?php echo '/data/scan/invoice/'.$q; ?>" type="application/pdf">
                            <p>
                                It appears you don't have a PDF plugin for this browser. No
                                biggie... you can <a href="#">click
                                    here to download the PDF file.</a>
                            </p>
                        </object>
                    </div>
                </td>
                <td><input id="lognumber" type="text" /> <input type="button" value="Search" onclick="search()"/> 
                <div style="height:40px;width:100%;">
                </div>
                    <br> <input type="button" value="Save" /> 
                    <br> <input type="button"value="Delete" /> <br>
                    <div id="lookup"></div>
                </td>
            </tr>
            <tr>
                <td height="300px"><?php //echo $this->paginationControl($this->paginator,'Jumping','partial/my_pagination_control.phtml'); ?>
                </td>
            </tr>
        </form>
        <?php endforeach; ?>
    </table>
</div>

<?


$this->widget('CLinkPager', array(
        'currentPage'=>$pages->getCurrentPage(),
        'itemCount'=>$item_count,
        'pageSize'=>$page_size,
        'maxButtonCount'=>5,
        //'nextPageLabel'=>'My text >',
        'header'=>'',
        'htmlOptions'=>array('class'=>'pages'),
));

文字列値の配列は、オブジェクトビューアでPDFファイルを表示するために使用されるファイルパスです。

4

1 に答える 1

1

問題は、空のCDbCriteriaに制限を適用することです。

$criteria = new CDbCriteria();
$pages->applyLimit($criteria);  // the trick is here!

そして、あなたは決して使用しません$criteria。あなたの例では、彼らは制限を適用し$criteria、それを使用してデータをフェッチするので、yiiがデータをフェッチしているときに、データがページ付けされることがわかります。

$this->render('index',array(
                        'model'=> ModelNameX::model()->findAll($criteria), 
        ));

やりたいことを行うにはCArrayDataProvider、ページ付けする必要のあるデータに使用する必要があります。

$dataProvider=new CArrayDataProvider($files);
$dataProvider->setPagination($pages);

そしてあなたの見解では、あなたは電話する必要があります

$dataProvider->getData() //will return a list of arrays.
于 2013-03-18T14:41:00.037 に答える