自定义 MY_Loader 加载一组视图 [重复]
Posted
技术标签:
【中文标题】自定义 MY_Loader 加载一组视图 [重复]【英文标题】:custom MY_Loader to load a group of views [duplicate] 【发布时间】:2013-01-26 03:13:55 【问题描述】:我想使用一个自定义的加载->视图,一旦创建就会为页面加载一组视图。它将具有与 $this->load->view() 相同的功能,但也可以预加载其他视图。我将如何写这个并让它工作?谢谢
<?php
class MY_Loader extends CI_Loader
function __construct()
parent::__construct();
function admin_view($load_page, $vars=array())
$this->load->view('admin/header');
$this->load->view($load_page);
$this->load->view('admin/footer');
function members_view()
//same purpose as admin view
function public_view()
//same purpose as admin view
【问题讨论】:
请查看我的previous answer。 【参考方案1】:这看起来不错,只是您不需要调用$this->load
,因为您已经“进入”CI_Loader(通过您的扩展程序),所以您可以试试:
function admin_view($load_page, $vars=array())
$this->view('admin/header');
$this->view($load_page);
$this->view('admin/footer');
这意味着您可以访问CI_Loader
的view
方法,因为您已经用您的类扩展了它。
【讨论】:
我想知道当我在控制器中编写 $this->load->admin_view() 时,代码点火器如何确定调用相应类的正确方法? @swatkins 这是 CI 如何让您扩展 CI 核心和基本类继承的混合体。通过创建一个MY_Loader
类并将其放在正确的位置,CI 将加载它而不是它的CI_Loader
类——并且因为MY_Loader
扩展了CI_Loader
——它的所有方法都可用。所以$this->load
是MY_Loader
类的实例化。因此,调用$this->load->admin_view();
会调用MY_Loader
类的admin_view
方法。
非常感谢你,我已经浪费了两三天来弄清楚它是如何工作的......你帮助我的事业和扩展加载器类的确切名称为“MY_loader”对吗?
是的,您可以将文件命名为 MY_Loader.php
。如果您扩展任何核心文件,那么您将根据配置文件中设置的前缀和核心类的名称(减去“CI_”部分)重命名文件。默认情况下,前缀是“MY_”(这是在 application/config/config.php 文件的第 136 行设置的:'$config['subclass_prefix'] = 'MY_';')【参考方案2】:
我曾经在views/_includes中有一个template.php,如下所示:
<?php
$this->load->view('_includes/header');
$this->load->view($view);
$this->load->view('_includes/footer');
所以我要加载的 $view 是通过控制器传递的。例如:
class News extends MY_Controller
public function index()
$data['view'] = 'admin/news/index';
$data['results'] = $this->news_model->get_all);
$this->load->view('admin/_includes/template', $data);
【讨论】:
以上是关于自定义 MY_Loader 加载一组视图 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
重用自定义 tableView 单元格时重复显示相同的子视图(Swift 4.1)