2013-08-24 104 views
0

我真的堅持這個問題笨加載只默認控制器

CI中

我有一個名爲user.php的

控制器,它有兩個功能的getUser()和save()

時我嘗試撥打http://localhost/CodeIginter/index.php/user/save

它總是調用getUser函數爲什麼?

class user extends CI_Controller 
{ 
    function __construct() 
    { 
     parent::__construct(); 
    } 

    function getUser() 
    { 
     $this->load->model('usermodel'); 
     $data['query'] = $this->usermodel->get_last_ten_entries(); 
     $this->load->view('users',$data); 
    } 

    function save() 
    { 
     $this->load->model('usermodel'); 
     $this->usermodel->insert_entry(); 
     $this->load->view('users'); 
    } 
} 

我的.htaccess文件包含

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L] 

,我也無法加載另一個控制器是helloworld.php

+1

也許你在你的codeigntiter項目中有錯誤的路線。你能否複製你的routes.php文件內容? –

+0

$ route ['default_controller'] =「user」; $ route ['404_override'] =''; –

回答

0

可能有兩個問題:

1.缺失的路線

轉到application/routes.php

$route['user'] = "user"; 

2.如果你想在url中從外部調用它,你需要公開函數。

所以,

class user extends CI_Controller 
{ 
function __construct() 
{ 
    parent::__construct(); 
} 

public function getUser() 
{ 
    $this->load->model('usermodel'); 
    $data['query'] = $this->usermodel->get_last_ten_entries(); 
    $this->load->view('users',$data); 
} 

public function save() 
{ 
    $this->load->model('usermodel'); 
    $this->usermodel->insert_entry(); 
    $this->load->view('users'); 
} 
} 

希望現在你的問題就解決了:)

+0

您不需要爲每個控制器編寫路由,因爲它會勝過CI的目的。方法默認被認爲是公開的。 – Shomz

-3

看來你缺少的路線。以下行添加到您的routes.php文件

$route['user'] = "user"; 

現在應該按預期工作

+2

您不需要爲每個控制器編寫路由,因爲它擊敗了CI的目的。 – Shomz

1

第1步:改變這種.htaccess

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteBase /your_folder_name/ 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?/$1 [L] 
</IfModule> 

2步:application/config/config.php

$config['base_url'] = 'full_path'; 
$config['index_page'] = ''; 

步驟-3:application/config/routes.php

$route['default_controller'] = "user"; 

步驟-4:用戶類添加此功能

public function index(){ 
} 
+0

我解決了我的問題.. –

0

控制器名稱必須大寫。因此,User而不是user

class User extends CI_Controller 
class Helloworld extends CI_Controller 
... 

雖然文件名仍保持小寫。

除此之外,一切似乎都很好。