【问题标题】:codeigniter custom library does not loadcodeigniter 自定义库不加载
【发布时间】:2016-04-28 05:11:33
【问题描述】:

我是一个使用 codeigniter 的初学者,并且一直在尝试制作一个我编写的要加载的自定义库。我已将 CI 设置为通过名为“check_login”的控制器启动网站。 该文件内容如下:

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

class Check_login extends CI_Controller {
    public function __construct (){
        parent::__construct();
        $this->load->library('check_login');
    }

    function index (){
        $this->check_login->checker();
    }
}

'check_login' 库被放入CI/application/libraries/ 并包含以下脚本:

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

class Check_Login {
    public function cheker (){
        //$CI =& get_instance();
        $is_logged_in = $this->session->userdata('is_logged_in');
        if(!isset($is_logged_in) || $is_logged_in != true){
            $this->load->view('welcome_message');
        }      
    }

}

我也尝试过使用$CI =&amp; get_instance(); 代替$this,还尝试将库的名称添加到autoload config 文件中以查看它是否有效。浏览器显示的结果如下: The Output in image 我想知道是什么导致我的库无法加载,以及何时应该使用get_instance(); 而不是 $this。非常感谢您。

【问题讨论】:

  • 我也看过下面的链接但我什么都看不懂:stackoverflow.com/questions/20250061/…
  • 您无法从库中加载库中的视图,只需返回 $is_logged_in 并在控制器中进行思考时使用它。
  • 不确定这是否有帮助,但是您的控制器和库共享相同的名称,您是否尝试过更改控制器名称?尝试加载这些类时可能会混淆系统
  • 你的函数被命名为“cheker”而不是“checker”...
  • 感谢您的指导,我不再收到任何错误,但结果是空白页。你能告诉我如何将 $is_logged_in 传递给控制器​​吗?

标签: codeigniter autoload


【解决方案1】:

似乎我对 PHP 知之甚少。我一直在调用库而没有在变量中分配它的值。因此,在控制器的索引功能中,我应该将命令更改为: $q = $this-&gt;check_login-&gt;checker();echo $q;

【讨论】:

    【解决方案2】:

    只需将您的班级名称更改为Check_login 或其他小写字母。你正在调用$this-&gt;check_login-&gt;checker();,在你的库中,你的函数名称是cheker()

    <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    
    class Check_login {
        public function __construct()
        {
            $CI =& get_instance();   
        }
        public function cheker ()
        {
            $is_logged_in = $this->session->userdata('is_logged_in');
            if(!isset($is_logged_in) || $is_logged_in != true){
                $this->load->view('welcome_message');
        }      
    }
    

    为什么$CI =& get_instance(); 通过引用分配允许您使用原始 CodeIgniter 对象,而不是创建它的副本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-29
      • 1970-01-01
      • 2020-03-14
      • 2011-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多