CodeIgniter PHP模型访问"无法找到您指定的模型"

Ale*_*duc 37 php model codeigniter-2

我一直在尝试为我正在建设的这个网站加载一些模型.但是,由于未知原因,它将带来以下错误:

An Error Was Encountered

Unable to locate the model you have specified: logon_model
Run Code Online (Sandbox Code Playgroud)

现在,我做了我的研究.问题是IC处理小写的文件名.但是,我的文件和文件调用都是小写的,如下所示:

echo "VALIDATING";
            // Validation passed. Off we go to account info verification from AA's database. God help us all.
            $this->load->model('logon_model');
            echo "FOUND MODEL";
            $res = $this->logon_model->verify_user($this->input->post('username'),$this->input->post('password'));
            echo $this->input->post('username');
            echo $this->input->post('password');
Run Code Online (Sandbox Code Playgroud)

执行没有达到"FOUND MODEL",因此在模型加载时停止.我试过用:

 $this->load->model(site_url('logon_model'));
Run Code Online (Sandbox Code Playgroud)

没有结果.需要提一下模型文件是否正确放置在正确的模型文件夹中?

我怎样才能解决这个问题 ?

编辑:模型文件的标题:

class Logon_model extends CI_Model {

....
Run Code Online (Sandbox Code Playgroud)

Rep*_*pox 61

在创建模型时,您需要将文件放入application/models/并以全小写命名文件 - 例如logon_model.php

logon_model.php应包含以下内容:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');


class Logon_model extends CI_Model
{
    public function __construct()
    {
        parent::__construct();
    }
    ...
Run Code Online (Sandbox Code Playgroud)

现在,您可以做的是测试您的应用程序模型是否可访问,尝试在浏览器中打开它 - 就像这样:http:
//example.org/application/models/logon_model.php

如果您看到文本没有允许直接脚本访问,则意味着您点击了正确的文件(如果您有疑问,请尝试在第一行的exit()中写入其他内容).

其次,要在控制器中加载模型,您应该能够这样做:

public function index()
{

    $this->load->model('logon_model');
    ...

}
Run Code Online (Sandbox Code Playgroud)

如果上面的所有内容都按预期检出,我会开始查看文件权限和/或可能符号链接(如果您使用的话).

  • php文件名必须与类名匹配,并且该类的第一个字符必须为大写.因此,您应该将Logon_model类放在Logon_model.php中.如果您在Windows上,文件名中的区分大小写不是问题,但它将在Linux上. (3认同)

jak*_*tus 59

我使用codeigniter 3+.我遇到了同样的问题,在我的情况下,我从uppser case开始更改了模型文件名.

Logon_model.php

  • 想要指出只有基于unix的系统(如linux和mac osx)才需要大写字母.在Windows上以un undercase字母开头工作正常. (5认同)
  • 相同.我正在使用Codeigniter 3.0,我需要将模型文件夹中的文件从'test_model.php'命名为'Test_model_php'. (2认同)

wcl*_*ark 8

这是模型应该是什么样子:确保你的模型是这样的.

    <?php
    class Logon_model extends CI_Model {

    function __construct()
    {
         parent::__construct();
    }

    function myFunc()
    {
      // do something
    }
}
Run Code Online (Sandbox Code Playgroud)

注意大写的类名.

加载它使用:

$this->load->model('logon_model');
Run Code Online (Sandbox Code Playgroud)

注意所有小写.


Gab*_*ber 5

我这样解决这个问题:

  1. 我重命名文件做Page_model.php
  2. Page_model的类名扩展...
  3. 我打电话给autoload: $autoload['model'] = array('Page_model'=>'page');

工作正常..我希望有所帮助.