我正在重新安裝現有網站以使用codeigniter。這種格式使用XML當前的系統存儲的導航配置在一個表格單元格:
<NAVIGATION>
<item1>
<id>1</id>
<name>Home</name>
<link></link>
<parent>0</parent>
<target>_self</target>
<rel>follow</rel>
<menu>main</menu>
</item1>
<item2>
<id>2</id>
<name>Some Page</name>
<link>some-page</link>
<parent>0</parent>
<target></target>
<rel>follow</rel>
<menu>main</menu>
</item2>
</NAVIGATION>
我不知道原來的開發商腦子裏想的是什麼,但它仍然無法解釋,我想保持的原因現在這種格式。
我創建了一個導航模型,從數據庫中提取這個XML並將其轉換爲數組。
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
class Navigation_model extends CI_Model
{
function __construct()
{
parent::__construct();
}
function get_navigation()
{
$this->db->select('pages.block');
$this->db->from('pages');
$this->db->join('style','style.styleID = pages.styleID','left');
$this->db->where('style.name','data');
$this->db->where('pages.locID',$this->config->item('splitID'));
$this->db->like('pages.block','<NAVIGATION>');
$navigation_query = $this->db->get();
$navigation_row = $navigation_query->row_array();
return xml2array($navigation_row['block']);
}
}
/* End of file navigation_model.php */
/* Location: ./application/model/navigation_model.php */
我想要做的,是加載在一個名爲navigation.php配置文件這一模式,導航數組加載到全球$配置陣列。我試圖自動加載模型,並在navigation.php中加載,但無濟於事。
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
$this->load->model('Navigation_model');
var_dump($this->Navigation_model->get_navigation());
/* End of file navigation.php */
/* Location: ./application/config/navigation.php */
我不斷收到以下錯誤:
Severity: Notice
Message: Undefined property: CI_Config::$load
Filename: config/navigation.php
Line Number: 3
我怎樣才能最好地實現我所試圖做的?
有趣的解決方案。我的第一個問題是,我不需要每一個控制器都可以訪問導航,對我來說這樣設置似乎有點奇怪。導航助手可以工作,但我不確定這是否非常直觀。是否可以設置它,以便導航配置文件像我嘗試的那樣從導航模型中拉出來? – Yev
我不確定,但比較配置和幫助,我認爲幫手更直觀。 –
如果您不希望每個控制器都有權訪問,您可以創建一個功能,例如'MY_Controller'中的'set_navigation()',並只加載到你想要的控制器中。 –