簡體   English   中英

在Codeigniter中的庫中加載視圖頁面

[英]Loading View Page In Library In Codeigniter

在我的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');

要做你想做的事,你需要獲得一個CI的實例,然后使用它。

例如

$CI =& get_instance();

在庫函數中,您可以使用此變量加載視圖:

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

我會問你為什么要在庫中以你已經完成的形式調用一個視圖。 我懷疑你最好讓視圖調用返回數據(設置第三個參數'true'),然后讓你的庫將顯示數據返回給控制器....你的方法似乎很亂,但后來我沒有想法你的圖書館正在努力做什么.....

我出於不同的原因遇到了你的問題,我似乎有問題將變量傳遞給視圖。 在我告訴你答案之前讓我解釋一下。

想象一下,您有一個Emailer庫來發送電子郵件,而不是在控制器中對其進行排序。 電子郵件發送器本身使用視圖構建電子郵件字符串。 我的問題是,當我從控制器調用Emailer :: send_mail($ data,$ template)時,它會正確傳遞變量,但是當我從另一個庫中執行此操作時,視圖無法注冊變量。 大聲笑

所以是的,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

您只是不要在庫中加載頁面(也就是視圖)。 我認為沒有必要這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM