如何得到 Header 中的變量?
各位前輩好, 小弟來自香港區, 在用 CodeIgniter 上遇到些問題, 希望可以指點一下。話說我以前做 php 都分成 3 塊 - header.php , main.php , footer.php
再用 rquire_once 或 include_once 將他們結合
而 header.php 主要放置判斷是否登入, 選單及判斷 Cookies 而出現用戶選擇的語言
我找了很多文章, 看了 HMVC , 但也許我對 CI 實在不太熟, 搞不清楚概代, 我現在假要弄 3 頁
就要有
index.php, index_view.php
about.php, about_view.php
contact.php, contact_view.php
header.php (放在 View)
footer.php (放在 View)
那我每頁都要引入 header.php 及 footer.php
如 About , 那假設我要跟手冊一樣加個動態 $data , 豈不是每個頁面都要寫一次
$data['title'] = xxx;
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class About extends CI_Controller {
public function index(){
// layout part
$this->load->view('header');
$this->load->view('about_view');
$this->load->view('footer');
}
}
/* End of file about.php */
但我直接寫變量在 header.php, 在 about_view.php 又無法使用
所以頭大了....
還是通常用 CI , 都是一頁 content.php 完成, 所有 index, about, contact 都寫進去?
那網址是 index/about ?index/index ?index/contact?
實在搞不懂, 有勞各前輩指教
本帖最后由 spt119 于 2011-6-15 08:54 编辑
楼主这个需求,helper解决不了。
如果公共文件(header或footer)有数据库读取的,楼主可以自行写个类文件,放到application/libraries下。把一些公共元素,在这个类里边定义。然后在各个控制器(controller)里加载这个类就可以了。
如果公共文件没有数据读取的,可以尝试使用定义一个helper。
还有一种在论坛中的hmvc模式,可以搜索一下。
个人认为,最简单的方式,就是自己写个类文件。在不同的控制器中,一行代码调用。再有,如果用这个方法,这个类的引用,最好在构造函数中。 第一种办法:你可以用HMVC实现,去论坛上搜下
第二种办法:我用的是1.73版本 在libraries文件夹下建立一个 busComm 类里面放了 herder 和fooder以及共同的方法。
然后在autoload 文件里$autoload['libraries']=array(busComm) *注意是类名
希望对你有帮助 在config的autoload中加载的方式最好慎用。
否则在一些ajax操作时,会出现异常。 謝謝兩位前輩的指導,估計 libraries 最簡單
HMVC 我看了幾篇,還沒完全理解,也許要再深入理解 CI 先才行
問多前輩一下,那我目前的分頁是正常的吧? 就是假設 3 頁內頁
就每個頁面一個 Controller 及一個 View?
因為我下載了一些模版,有不少是一個 Controller 對 N 個 View 你這個問題昨天看了看,在手冊上說,多個視圖傳值,只需要在第一個視圖中傳遞就OK了。你試試吧 xushre 发表于 2011-6-16 09:07 static/image/common/back.gif
你這個問題昨天看了看,在手冊上說,多個視圖傳值,只需要在第一個視圖中傳遞就OK了。你試試吧 ...
Xushre 兄,
這個我也看了,但好像是發生在同一個 controller php 才行
如果的 about.php , contact.php 都要引入 header
那 header 的 data 還是要寫在其他頁面 本帖最后由 xushre 于 2011-6-16 13:25 编辑
可以用一個共用的C来调用一个V,然后在其他的C里面调用那个C就可以了啊 C 也可以 load C?
請教一下如何 C內 load C? 用繼承不就可以了?比如我有一個user模板,裡面肯定會有一個公用的名為User的控制器,然後在用戶要
進行操作的控制器裡面直接繼承User這個控制器,就可以少很多的重複了
页:
[1]
2