2013-03-18 3 views
-1

Я пытаюсь сделать yii pagination и после этого example. Как бы то ни было, это не работает для меня. Я хочу разбивать на строки массив значений строк. Вот что у меня есть:yii pagination с массивом

CONTROLLER

$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 
)); 

VIEW

<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-файлов в средстве просмотра объекта.

ответ

1

Проблема заключается в том, что вы применить ограничение на пустой CDbCriteria:

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

И тогда вы никогда не использовать $criteria. В вашем примере они применяются ограничения по $criteria, а затем они используют его для извлечения данных, поэтому, когда юй является извлечением данных, он знает, что это будет постраничным:

$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. 
+0

Стоит отметить, что если вы используете [CArrayDataProvider] (http://www.yiiframework.com/doc/api/1.1/ CArrayDataProvider) (который создает поставщика данных на основе массива), это небольшой переход к использованию [CGridView] (http://www.yiiframework.com/doc/api/1.1/CGridView), и вы можете позволить Yii обрабатывать генерация таблицы, сортировка, разбивка на страницы, макет и т. д. – ernie

+1

Хм вы также можете использовать его с CListView, позволяя ему делать то, что он делал в цикле foreach, вызывая другое представление. – darkheir

+0

Я использовал dataprovider, но как бы реализовать это для моего использования? – shorif2000

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