在我的控制器(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");
从load语句中,我得到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]
答案 0 :(得分:3)
据说这是在__construct(构造函数)中加载模型,库的最佳实践
class User extends CI_Controller
{
public function __construct()
{
parent:: __construct();
$this->load->model('user_model');
}
}
请尝试将控制器名称“用户”更改为“用户”(没错,但如果不能正常工作则尝试使用)。命名冲突可能是。
答案 1 :(得分: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()
{
}
}
答案 2 :(得分:0)
不要在模型中使用contruct方法,而是遵循以下规则:
# 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
}
}
如果只需要为特定函数加载模型,则只在该函数中加载模型而不是构造函数。在构造函数中加载模型使模型函数可用于所有控制器函数。
答案 3 :(得分:0)
还值得注意的是,当您加载模型时,它不会自动连接到数据库,但如果您将TRUE作为第三个参数传递,那么它将
class User extends CI_Controller
{
public function __construct()
{
parent:: __construct();
$this->load->model('user_model', '', TRUE);
}
}
如果你知道你将要加载很多模型,你也可以在application / config / autoload.php文件中自动加载它
答案 4 :(得分:-1)
检查你的文件名。它们是扩展名.php ??我自己遇到了这个问题,结果发现我忘了添加.php扩展名