2017-04-12 17 views
0

CI official documentationによると、設定ファイルで設定を行うことは可能ですが、これを動作させることはできません。設定ファイル内のCodeigniterページ設定

私はpagination.phpファイルの3行目に問題を絞り込んだと思います。私が受け取るエラーメッセージは次のとおりです。

メッセージ:未定義のプロパティ:CI_Loader :: $デシベル

メッセージ:nullの上メンバ関数のget()の呼び出し

私はからのコード行を変更するたび

。予想通り

$config['total_rows'] = $this->db->get('item')->num_rows(); 

$config['total_rows'] = 200; 

にすべてが動作します。何かをロードしたり、データベースを呼び出すことに失敗しましたか?

私のコードは次のとおりです。

コントローラ

public function index() { 
    $this->load->library('pagination'); 
    $data = array(
     'items'  => $this->items_model->itemList(), 
     'title'  => 'Library Items' 
     ); 
    $this->load->view('item_list', $data); 
} 

モデル

public function itemList() { 
    $this->db->select('item_id, item_title'); 
    $this->db->from('item'); 
    $this->db->limit(5, $this->uri->segment(3)); 
    return $this->db->get()->result(); 
} 

ビュー

あなたのコードでは

pagination.php

defined('BASEPATH') OR exit('No direct script access allowed'); 
$config['base_url'] = '/ci/items/index'; 
$config['total_rows'] = $this->db->get('item')->num_rows();// when I change this to `$config['total_rows'] = 200` it works 
$config['per_page'] = 5; 
$config['num_links'] = 5; 
$config['full_tag_open'] = '<div><ul class="pagination">'; 
$config['full_tag_close'] = '</ul></div><!--pagination-->'; 
$config['first_link'] = '&laquo; First'; 
$config['first_tag_open'] = '<li class="prev page">'; 
$config['first_tag_close'] = '</li>'; 
$config['last_link'] = 'Last &raquo;'; 
$config['last_tag_open'] = '<li class="next page">'; 
$config['last_tag_close'] = '</li>'; 
$config['next_link'] = 'Next &rarr;'; 
$config['next_tag_open'] = '<li class="next page">'; 
$config['next_tag_close'] = '</li>'; 
$config['prev_link'] = '&larr; Previous'; 
$config['prev_tag_open'] = '<li class="prev page">'; 
$config['prev_tag_close'] = '</li>'; 
$config['cur_tag_open'] = '<li class="active"><a href="">'; 
$config['cur_tag_close'] = '</a></li>'; 
$config['num_tag_open'] = '<li class="page">'; 
$config['num_tag_close'] = '</li>'; 
$config['anchor_class'] = 'follow_link'; 

おかげ

+0

あなたのモデルはどこですか?どこでデータベースの制限とオフセットを使用していますか? – Gaurav

答えて

1

質問を変更し続けると、以前の回答がちょっと変わってしまいます。ただし、dbをロードすることも、設定ファイルでdbコールを使用することもできません。値を取得するためにデータベースクエリを実行する必要がある場合は、もはや設定を使用せずに、ライブラリメソッド呼び出しで使用するために値を引数に代入します。

// load config file 
$this->config->load('pagination', TRUE); 

// access pagination settings 
$settings = $this->config->item('pagination'); 

// change whatever you need to 
$settings['total_rows'] = $this->db->get('item')->num_rows(); 

// use the settings to initialize the library 
$this->pagination->initialize($settings); 

限り私が知っているように存在より簡単な方法であることが、可能性があります。だから、あなたのコントローラでのようなものを使用して設定を上書きし、50を言って、いくつかの固定妥当な値に設定値を設定し

ページネーションライブラリには他のセッターはいません。

0

次の行を書かれている:あなたの改ページが設定ファイル内にある場合

$this->pagination->initialize($data); 

この行は必要ありません。

設定ファイルで設定を行うには、設定フォルダに「pagination.php」というファイルを作成します。あなたは、これらはすべて、あなたが上記のように初期化関数を使用することなく、自動的にロードされますページネーションクラスをロードすると

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

$config['base_url'] = '/ci/items/index'; 
$config['per_page'] = 5; 
$config['num_links'] = 5; 
....etc etc 

:あなたのファイルには、このようなものになるだろう。助け

public function index() { 
    $data['total_rows'] = $this->db->get('item')->num_rows(); 
    //start pagination 
    $this->load->library('pagination'); 

    $data = array(
     'items'  => $this->items_model->itemList(), 
     'title'  => 'Items' 
     ); 

    $this->load->view('item_list', $data); 
} 

希望: だからあなたのコントローラは、次のようになります。

0

configフォルダ内にある名前がpaginationの設定ファイルを作成できます。設定ファイルは、ライブラリをロードすると自動的に呼び出されます。コントローラで

は、カスタム設定し、最終的に$this->pagination->initialize($data);

最終的なコードを追加し、このようなものです:$config['num_links'] = 2;よう

$this->load->library('pagination'); 

$config['base_url'] = base_url('task/lists/'); 
$config['total_rows'] = $this->tasks->lists_user_count(); 
$config['per_page'] = 30; 
$config['uri_segment'] = 3; 

$this->pagination->initialize($config); 

他の設定は、設定ファイルです。

関連する問題