简单代码点火器控制器和模型导致500错误-没有显示CI错误


Simple Code Igniter Controller and Model causing a 500 error - no CI error shown

我刚刚开始学习Code Igniter,我几乎马上就遇到了一个问题。

使用下面的代码和具有正确权限的数据库设置,我得到一个500错误(服务器错误)。CI没有抛出错误,我看不出这段代码有什么问题。

我正在使用最新版本的CI并测试以下代码:

控制器:products.php

class Products extends CI_Controller {
public function index() {
    $this->load->model('products');
    $this->load->view('products');
}
}

模型:products.php

class Products extends CI_Model {
    function __construct() {
        parent::__construct();
    }
    function get_products() {
        $q = $this->db->get('product');
    if($q->num_rows() > 0) {
        foreach ($q->result() as $row) {
            $data[] = $row;
        }
        return $data;
    }
}
}

我已经把这些类放在它们应该在的目录中,文件名与类....相同如果我注释掉控制器中的负载模型代码,我的视图就会显示出来。我的数据库连接是正确的,因为如果我将它们更改为不正确的东西,CI会抛出错误。模型或加载有问题

你有冲突的类名,模型和控制器类都叫Products

试试这个:

类Products扩展CI_Controller {

public function index() {
    $this->load->model('products_model','products');
    $this->load->view('products');
}
}

模型:products_model.php

class Products extends CI_Model {
                        function __construct() {
            parent::__construct();
    }
    function get_products() {
        $q = $this->db->get('product');
    if($q->num_rows() > 0) {
        foreach ($q->result() as $row) {
            $data[] = $row;
        }
        return $data;
    }
}
}

一个好的习惯是将控制器命名为ProductsController,然后将模型保留为Products。所以所有的控制器都是SomethingController

的例子:

class ProductsController extends CI_Controller

文件名变为products_controller.php

,模型仍然是:

class Products extends CI_model

和product .php