[英]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.