2013-05-03 37 views
0

如果我們在codeigniter中給出了一個方法/函數的名字index,我們可以在不調用它的情況下轉到那個方法(所以我們只需要使用它的controller名稱)。CI索引方法/函數在某些情況下不會自動添加?

那是因爲我們在config.php指定它(或CI默認指定它):

$config['index_page'] = 'index.php'; 

所以,當我使用一些像libraryform_validation,我並不需要指定索引方法。但是,我嘗試使用pagination類時出現問題。

我需要在代碼中指定index方法,或pagination不工作(如果我點擊下一個分頁指數,它提供了錯誤):

$config['base_url'] = site_url('/backend_umat'); 

所以,我有使用:

$config['base_url'] = site_url('/backend_umat/index'); 

pagination完美的作品。

請問任何人都可以給我一個說明關於發生了什麼事?我的問題解決了,但我是好奇關於這裏發生了什麼。

感謝:d

+0

你有沒有使用'$ config ['uri_segment'] = 3;'分頁? – 2013-05-03 07:08:56

+0

@elavarasanlee是的:D – 2013-05-03 11:10:48

回答

1

在笨分頁:

  • $config['base_url']應該是完整的URL。即base_url()/{CONTROLLER}/{FUNCTION}
  • 所以,如果你不給完整的路徑,分頁類將忽略{}功能和將創建類似鏈接:

base_url()/{CONTROLLER}/{PAGE1} , base_url()/{CONTROLLER}/{PAGE2} , base_url()/{CONTROLLER}/{PAGE3}等等...而不是 base_url()/{CONTROLLER}/{FUNCTION}/{PAGE_NO}


現在在你的函數的地方有一個號碼(頁碼),這是不存在於你的控制器類,但被假定爲控制器內部的功能。這就是你得到的原因404 Page Not Found錯誤。


有兩種方法可以解決這個問題。

  1. 你已經做到了這一點。 $config['base_url'] = site_url('/backend_umat/index');
  2. 使用路線
    裏面你routing.php文件中定義的:
    $route['backend_umat/(:num)'] = 'backend_umat/index/(:num)';
    在你控制器$config['uri_segment'] = 2;
    如果你已經使用:$this->uri->segment(3)在你的代碼,使之爲$this->uri->segment(2)
    這將做。
+0

感謝您的簡潔解釋:D – 2013-05-03 11:14:57

+0

dat我的責任.. 。:) – 2013-05-03 11:18:25

1

這是因爲當你的控制器名稱後有一些笨不能區分這是該指數方法的參數,它被認爲是一種方法。當導航到下一個頁面時,會附加到URL,並且如果基本URL中沒有方法名稱,它會嘗試從附加的url中獲取方法名稱。

+0

感謝您的幫助,它太糟糕了我只能接受1回答 – 2013-05-03 11:12:12

1

您可以將所有backend_umat/路由到index

$routes['backend_umat/(:any)'] = 'backend_umat/index/$1'; 

或者只在方法名是空的,NULL

$routes['backend_umat/(^[\s]*$)'] = 'backend_umat/index/$1'; 

// or JUSt 

$routes['backend_umat/(^[\s]*$)'] = 'backend_umat/index'; 

可以在config/routes.php添加routes配置。

+0

感謝您的幫助,它太糟糕了我只能接受1個答案 – 2013-05-03 11:13:27

相關問題