繁体   English   中英

Codeigniter 3.0.2无法从库文件夹加载应用程序库

[英]Codeigniter 3.0.2 not loading application library from libraries folder

我不知道为什么codeigniter会显示这种行为:

1)我在application / libraries / form文件夹中创建了一个Adminforms.php类。

class Adminforms {

public function displayLoginForm() {
$formOptions = array();
return $formOptions;
}
}

2)当我在视图中加载此库类时

<? $this->load->library("form/adminforms"); ?>
<? var_dump($this->adminforms); ?>
<?= $this->adminforms->displayLoginForm(); ?>

它显示错误:

A PHP Error was encountered
Severity: Notice
Message: Undefined property: CI_Loader::$adminforms

3)我进入了codeigniter的Loader类,开始看到它的行为。 我看到文件路径,类名非常适合加载该库。 而且codeigniter还在_ci_classes中设置了它的名称(Loader.php第1242行)。 但是当它分配对象到codeigniter实例时

$CI->$object_name = isset($config)
? new $class_name($config)
: new $class_name();

我尝试为我的Adminforms.php库打印此实例对象$ CI-> $ object_name。 我得到以下信息:

object(Adminforms)#20 (0) { }

有谁知道为什么它不能正确加载类对象?

您需要首先获取ci对象,然后改用该对象。 ci对象在视图中不可用。 理想情况下,您不应在视图中加载库。 Codeigniter遵循MVC模式。 业务逻辑应该在模型中,控制应该在控制器中,视图应该在视图中

$this->ci =& get_instance (  );
$this->ci->load->library("Test/Adminforms");
$this->ci->adminforms->displayLoginForm();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM