3

在我的控制器(controllers/user.php)中,我有:

class User extends CI_Controller 
{
    public function index() 
    {       
         $this->load->model('user_model')or die("error");  
    }
}

在我的模型(models/user_model.php)中,我有

class User_model extends CI_Model
{
    public function __construct()
    {
        parent::__construct();
        $this->load->database();
        $this->load->helper('common');
    }
}

如果我删除

or die("error");

从加载语句中,我得到一个 500 内部服务器错误。

我检查了 config.php,这里有一些信息

$config['base_url'] = ''; 
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';

我还编辑了 .htaccess 文件以从 URL 中删除“index.php”以使其更清晰。

RewriteEngine On
RewriteCond $1 !^(index.php|images|captcha|css|js|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
4

5 回答 5

3

据说在__construct(构造函数)中加载模型、库是一种最佳实践

class User extends CI_Controller 
{
    public function __construct() 
    {       
         parent:: __construct();
         $this->load->model('user_model');  
    }

}

还请尝试将控制器名称“用户”更改为“用户”(没有错,但如果不起作用,请尝试)。命名冲突可能。

于 2013-07-05T05:11:13.800 回答
0

还值得注意的是,当您加载模型时,它不会自动连接到数据库,但是如果您将 TRUE 作为第三个参数传递,那么它将

class User extends CI_Controller 
{
    public function __construct() 
    {       
         parent:: __construct();
         $this->load->model('user_model', '', TRUE);  
    }
}

如果你知道你将要加载一个模型,你也可以在 application/config/autoload.php 文件中自动加载它

于 2013-07-05T13:30:38.260 回答
0
class User extends CI_Controller 
{
    public function __construct()
    {
        parent::__construct();
        $this->load->database();
        $this->load->helper('common');
        $this->load->model('user_model');
    }    

    public function index() 
    {       

    }
}
于 2013-07-05T06:04:02.053 回答
0

不要在模型中使用 struct 方法,而是遵循以下规则:

# in the User controller
class User extends CI_Controller{
    public function __construct(){
        parent::__construct();
        $this->load->database();
        $this->load->helper('common');
        $this->load->model('user_model');
    }

    public function index()
    {       
         //$this->load->model('user_model')or die("error");
         #now you can use the user_model here 
    }
}

如果您只需要为特定函数加载模型,则仅在该函数中加载模型,而不是在构造函数中加载。在构造函数中加载模型使模型函数可用于所有控制器函数。

于 2013-07-05T07:22:37.060 回答
-1

检查你的文件名。它们是扩展名.php 吗?我自己也遇到了这个问题,结果我忘记添加 .php 扩展名

于 2016-08-03T10:31:03.250 回答