【问题标题】:getting error in codeigniter在 codeigniter 中出现错误
【发布时间】:2011-10-03 21:18:51
【问题描述】:

我正在我的 codeigniter 应用程序中自动加载一个名为“render”的库。 该库的完整代码是:

类渲染扩展 CI_Controller { 公共函数模板($template,$view,$extra_css,$extra_js){ $数据 = 数组(); 如果(isset($view)){ $data['view'] = $view; } 如果(isset($extra_css)){ $data['extra_css'] = $extra_css; } 如果(isset($extra_js)){ $data['extra_js'] = $extra_js; } $template = $this->load->view("templates/$template", $data, TRUE); 回声$模板; } }

这个库工作正常,但问题是每当我手动加载这个库或通过编辑自动加载文件时,当我在我的任何控制器中加载任何模型时都会出错。

遇到 PHP 错误 严重性:通知 消息:未定义的属性:Home::$my_model_name 文件名:控制器/home.php 行号:11

这里的第 10 行和第 11 行是:

$this->load->model('my_model_name'); $this->my_model_name->my_model_method();

我也尝试过使用:

$this->load->model('my_model_name', 'My_model'); $this->My_model->my_model_method();

我的控制器“家”代码是:

家庭类扩展 CI_Controller { 函数 __construct() { 父::__construct(); } 公共函数索引() { $this->load->model('my_model_name'); $this->my_model_name->index(); } }

我尝试将 __construct() 方法添加到我的库中,但仍然没有成功。

【问题讨论】:

  • 你能把代码从 controllers/home.php 贴出来吗?
  • @Ahmed Nuaman : 当然,我刚刚编辑了帖子,请再检查一次。
  • 我看不到您要在哪里加载 Render 库...您是否要在模型中加载它 my_model_name ????
  • 给我们my_model_name代码,并确保它在application/models/my_model_name.php
  • 您好 jondavidjohn,问题已解决,感谢您的关注。

标签: php codeigniter


【解决方案1】:

通过做

class Render extends CI_Controller

您创建的不是库,而是控制器!为了创建一个库,只需创建类并将其放入库文件夹中。

在你的库中,如果你想使用 CI 的加载器来加载模型,例如,你需要实例化主 CI 类。

$CI = & get_instance();

类似(文件application/libraries/render.php):

    class Render {

      var $CI;

      function __construct()
      {
        $this->CI = &get_instance();
      }

       public function template($template, $view, $extra_css, $extra_js) {
        $data = array();
        if (isset($view)) {
            $data['view'] = $view;
        }
        if (isset($extra_css)) {
            $data['extra_css'] = $extra_css;
        }
        if (isset($extra_js)) {
            $data['extra_js'] = $extra_js;
        }
        $template = $this->CI->load->view("templates/$template", $data, TRUE);
        return $template;
    }
}

然后您可以$CI->load 在您的库、模型、其他库等任何您想要的东西。
有关详细说明,请参阅Utilize CI resource within your library。你用通常的方式调用你的库,$this->load->library('render') 然后$this->render->whatever();

【讨论】:

  • 感谢您的大力帮助,您为我节省了很多时间,我没有睡一整晚只是为了通过谷歌搜索找到解决此问题的方法,但是您在 stackoverflow 上做得很好,谢谢一百万。
猜你喜欢
  • 1970-01-01
  • 2018-02-19
  • 2012-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多