在Codeigniter中的库中加载视图页面

时间:2012-01-31 03:52:02

标签: php codeigniter classloader codeigniter-2

在我的codeigniter中,我在库文件夹中创建了一个库。我想在该库中加载视图页面。我该怎么做?

这是我的代码:

$this->load->view('view_page');

但是当我使用这段代码时出现错误:

A PHP Error was encountered

Severity: Notice

Message: Undefined property: CI_theme_lib::$load

Filename: libraries/theme_lib.php

Line Number: 9

mycode有什么问题?

在库中第9行,代码为:

$this->load->view('view_page');

3 个答案:

答案 0 :(得分:5)

要做你想做的事情,你需要获得一个CI的实例,并使用它。

e.g。

$CI =& get_instance();

在库函数中,可以然后使用此变量加载视图:

$CI->load->view('view_page'); 

我会问你为什么要在库中以你已经完成的形式调用一个视图。我怀疑你最好让视图调用返回数据(设置第三个参数'true'),然后让你的库将显示数据返回给控制器....你的方法似乎很乱,但后来我没有想法你的图书馆正在努力做什么......

答案 1 :(得分:2)

我出于不同的原因遇到了你的问题,我似乎有问题将变量传递给视图。在我告诉你答案之前让我解释一下。

想象一下,您有一个Emailer库来发送电子邮件,而不是在控制器中对其进行排序。 电子邮件发送器本身使用视图构建电子邮件字符串。我的问题是,当我从控制器调用Emailer :: send_mail($ data,$ template)时,它会正确传递变量,但是当我从另一个库中执行此操作时,视图无法注册变量。 LOL

所以是的,StéphaneBourzeix你有时想要以不同于返回客户端浏览器的方式使用视图中的输出。

解决方案就在这里。 https://www.codeigniter.com/userguide2/general/views.html

该页面的最后一部分有类似

的内容
$string = $this->load->view('myfile', '', true); 

但是类似

$string = $this->load->view('myfile', $view_data, true);

也应该工作

如果从控制器以外的其他地方执行此操作,则需要:

$this->ci = & get_instance();
$string = $this->ci->load->view("myfile",$view_data,true);

似乎列表中的最后一个参数(true)是告诉它不要渲染到浏览器而是只创建带有模板内容的字符串

我知道这有点太晚了,但希望它对某些人有帮助。祝你的代码好运。

tomhre

答案 2 :(得分:0)

您只是不要在库中加载页面(也就是视图)。 我认为没有必要这样做。