2012-01-17 128 views
0

足夠長的時間我一直在使用codeignter,它的類真的很好,簡單而有用。
我正在嘗試在我的自定義php框架中將分頁類集成到CI設置的/ base/system/libraries文件夾中,然後我成功地將Table類與PHP數據集成在一起以創建動態表。
這裏我遇到了/base/system/libraries/Pagination.php中的$CI =& get_instance();問題,它在controller.php中被實例化。 而它的拋出錯誤是因爲我沒有使用整個控制器,而只是它的類。
有沒有我可以使用分頁類,沒有get_instance()的任何解決方案。需要使用codeigniter類的核心php

+2

你似乎有使用笨庫倒掛的整個概念。你可以發佈你想要做的一些代碼嗎? – 2012-01-17 05:59:46

+0

如果這是你的_modus operandi_,那麼最好使用Zend Framework。你是什麼意思「我沒有在任何地方使用控制器」?所以你只是在你的個人項目中使用CI的分頁課程,而沒有其餘的框架? – 2012-01-17 06:14:32

+0

@JosephSilber,是的,我知道它使用它的奇怪方式;-),但我只是包括類文件。並通過創建object.I使用它的函數。我使用CI的表類如下:'include_once(LIB_DIR。'/ Table .php'); $ table = new Table('default_template'); $ table-> set_heading($ dataHeader); $ table-> generate(); '等 – Debugger 2012-01-17 10:46:08

回答

0

分頁類不依賴於CI。您可以簡單地重寫它,找到並替換所有對「外部」的引用,並使用它嘗試分配的正確數據。然後,分頁將無需與CI進行任何交互即可工作,並且您可以在您的框架中使用它。

+0

完成..刪除了所有的CI實例。 – Debugger 2012-01-17 14:17:30

+0

而且?它解決了問題嗎? – Ranty 2012-01-17 15:09:27

+0

是的。我有大多數解決方案作爲答案。 – Debugger 2012-01-17 15:54:34

1
$CI =& get_instance(); 

    if ($CI->config->item('enable_query_strings') === TRUE OR $this->page_query_string === TRUE) 
    { 
     if ($CI->input->get($this->query_string_segment) != $base_page) 
     { 
      $this->cur_page = $CI->input->get($this->query_string_segment); 

      // Prep the current page - no funny business! 
      $this->cur_page = (int) $this->cur_page; 
     } 
    } 
    else 
    { 
     if ($CI->uri->segment($this->uri_segment) != $base_page) 
     { 
      $this->cur_page = $CI->uri->segment($this->uri_segment); 

      // Prep the current page - no funny business! 
      $this->cur_page = (int) $this->cur_page; 
     } 
    } 

if(isset($_GET['cur_page'])){ 
     $this->cur_page = $_GET['cur_page']; 
    }else{ 
     $this->cur_page = 1; 
    } 

&

if ($CI->config->item('enable_query_strings') === TRUE OR $this->page_query_string === TRUE) 
     { 
      $this->base_url = rtrim($this->base_url).'&'.$this->query_string_segment.'='; 
     } 
     else 
     { 
      $this->base_url = rtrim($this->base_url, '/') .'/'; 
     } 

刪除此。

這樣稱呼它,

include_once(LIB_DIR.'/pagination.class.php'); 
$pagination = new Pagination(); 

$config['base_url'] = 'http://testme.com/stats.php?cur_page='; 
$config['total_rows'] = 200; 
$config['per_page'] = 20; 

$pagination->initialize($config); 

echo $pagination->create_links();