自定义 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-&gt;load,因为您已经“进入”CI_Loader(通过您的扩展程序),所以您可以试试:

function admin_view($load_page, $vars=array())

    $this->view('admin/header');
    $this->view($load_page);
    $this->view('admin/footer');

这意味着您可以访问CI_Loaderview 方法,因为您已经用您的类扩展了它。

【讨论】:

我想知道当我在控制器中编写 $this->load->admin_view() 时,代码点火器如何确定调用相应类的正确方法? @swatkins 这是 CI 如何让您扩展 CI 核心和基本类继承的混合体。通过创建一个MY_Loader 类并将其放在正确的位置,CI 将加载它而不是它的CI_Loader 类——并且因为MY_Loader 扩展了CI_Loader——它的所有方法都可用。所以$this-&gt;loadMY_Loader 类的实例化。因此,调用$this-&gt;load-&gt;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)

如何确定 UIView 是不是已加载 [重复]

自定义横向/纵向视图

自定义键盘附件视图输入

如何在 Core Data 中存储一组自定义(和重复)对象?

HMVC集成在Codeigniter视图路径中。