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");

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]
4

5 に答える 5

3

__construct(コンストラクタ)でモデル、ライブラリをロードするのがベストプラクティスと言われています

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

}

また、Controller 名の「User」を「Users」に変更してみてください (問題はありませんが、うまくいかない場合は試してください)。名前の競合が発生する可能性があります。

于 2013-07-05T05:11:13.800 に答える
0

モデルでコントラクト メソッドを使用しないでください。代わりに、次の規則に従います。

# 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 に答える
0

また、モデルをロードしてもデータベースに自動的に接続されませんが、3 番目のパラメーターとして 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 に答える
-1

ファイル名を確認してください。拡張子.phpですか?? 私は自分でこの問題を抱えていました.php拡張子を追加するのを忘れていたことが判明しました

于 2016-08-03T10:31:03.250 に答える