2013-09-20 4 views
0

Я пытаюсь интегрировать разбиение на страницы в кохане, но не знаю, как его интегрировать. Ниже приведена функция контроллераКак интегрировать разбивку на страницы в Кохане?

public function action_index() { 
     //setup the model and view 
     $_users = Model::factory('users'); 
     $us = $_users->get_users(); 

     $view = View::factory('users/index')->bind('user_list', $us); 
     $this->template->set('content',$view); 
    } 

Как можно добавить разбиение на страницы в этой функции? Я нашел код для разбивки на страницы, но не смог его интегрировать. Это функция я нашел

$this->pagination = new Pagination(array(
      'base_url' => 'users/index/', 
      'uri_segment' => 'page', 
      'total_items' => count($items->get_item_count()) 

Пожалуйста, помогите мне

EDIT: Я пытался что-то вроде

public function action_index(){ 

    $query = DB::select()->from('user'); 
    // count number of users 
    $total_users = count($query);; 
    // set-up the pagination 
    $pagination = Pagination::factory(array(
     'total_items' => $total_users, 
     'items_per_page' => 10, // this will override the default set in your config 
    )); 
    // select rows using pagination's limit&offset 
    $users = $query->offset($pagination->offset)->limit($pagination->items_per_page)->execute(); 
    $view = View::factory('users/index')->bind('user_list', $users)->bind('pagination', $pagination); 
    $this->template->set('content',$view); 
} 

Теперь не нашел никакой ошибки, но нумерация страниц не отображается. Используемый теневой модуль shadowhand, предложенный @DanielThompson

+0

Данная документация была http://kohanaframework.org/3.0/guide/api/Pagination. Может ли кто-нибудь показать какой-то пример –

+0

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

+0

Am using kohana 3.3.1 –

ответ

4

Я использую shadowhand's pagination module, который поддерживает Kohana 3+, просто убедитесь, что вы захватили ту же ветку, что и ваша версия Kohana, а затем добавьте ее в свой каталог модулей.

Обновите application/bootstrap.php файл:

Kohana::modules(array(
    // ... 
    'pagination' => MODPATH.'pagination' 
)); 

Копия modules/pagination/config/pagination.php в application/config/pagination.php

В вашем действии контроллера (например, пользователей):

// count number of users 
$total_users = ORM::factory('User')->count_all(); 

// set-up the pagination 
$pagination = Pagination::factory(array(
    'total_items' => $total_users, 
    'items_per_page' => 10, // this will override the default set in your config 
)); 

// get users using the pagination limit/offset 
$users = ORM::factory('User')->offset($pagination->offset)->limit($pagination->items_per_page)->find_all(); 

// pass the users & pagination to the view 
$this->view->bind('pagination', $pagination); 
$this->view->bind('users', $users); 

На ваш взгляд:

// loop over users 
foreach($users as $user) { 
    // ... 
} 

// display pagination view using 
echo $pagination; 

Модуль поставляется с двумя видами: базовыми или плавающими, которые установлены в файле конфигурации. Вы также можете создать пользовательский для своего приложения.

+0

Спасибо. У вас есть еще несколько сомнений. Я не использую метод ORM. Возможно ли без ОРМ? –

+0

Не знаком с методом ORM. Сделано еще несколько обновлений в описании вопроса, можете ли вы, пожалуйста, взглянуть. –

+1

@hariprasad может быть потому, что вам не хватает выполнения: '$ query = DB :: select() -> from ('user') -> execute();' –

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