[英]how to retrieve data in view Independent of controller in codeigniter
我的網站上有一個側邊欄,可從db接收一些信息,並且由於控制器和側邊欄相同,因此無法使用控制器來檢索數據。 如何在查看頁面中打印此數據。 當我在視圖中用PhP代碼編寫代碼時,顯示了無法定義變量的錯誤。
我該怎么辦?
當發現在許多不同的控制器中需要相同的代碼時,“自定義庫”(類)是最佳選擇。 在這里可以找到用於創建自己的庫的文檔。
控制器應該使用模型從數據庫中獲取數據。 定制庫也可以像控制器一樣使用模型。 這是一個稱為Sidebar
的非常基本的自定義庫。 它取決於將不會顯示的模型( sidebar_model
)。 Sidebar
庫的目的是返回sidebar_view
文件所需的變量。
文件: application / libraries / Sidebar.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Sidebar
{
protected $CI; // Read the documentation link to see why this is needed.
public function __construct()
{
$this->CI = & get_instance();
$this->CI->load->database(); //only needed if not already done
$this->CI->load->model('sidebar_model');
}
public function get_sidebar_data()
{
return $this->CI->sidebar_model->get_sidebar();
}
}
庫方法get_sidebar_data()
返回該視圖的變量。
這是使用自定義庫的控制器。 它將使用自定義庫和包含HTML邊欄的視圖文件(未顯示)。
文件: application / controllers / Main.php
class Main extends CI_Controller
{
function __construct()
{
parent::__construct();
$this->load->library('sidebar'); //can also be autoloaded
}
public function index()
{
$data['sidebar'] = $this->sidebar->get_sidebar();
$this->load
->view('banner')
->view('sidebar_view', $data)
->view('main_view')
->view('footer_view');
}
}
需要顯示邊欄的任何其他控制器將使用相同的模式。
該控制器加載四個不同的視圖文件,並使用鼓勵的“方法鏈接”。 方法鏈接的執行速度更快。 但是使用它的最好理由是什么? 打字少。
方法更改也可以是這樣的類型:
$this->load->view('banner')->view('sidebar_view', $data)->view('main_view')->view('footer_view');
但是,IMO將每個->view()
放在單獨的行上可以更輕松地閱讀。
您可以為常見任務創建一個助手。 然后為側邊欄創建一個函數,並在需要時調用它。 檢查此鏈接以獲取有關創建助手的更多詳細信息
您也可以為其創建一個庫。 雖然這不是一個很好的選擇。
創建側邊欄(視圖頁面),並直接在該側邊欄中(視圖頁面)調用模型。
其次,直接在所有其他視圖頁面內調用邊欄(視圖頁面)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.