【问题标题】:Loading a controller from another module in CodeIgniter HMVC在 CodeIgniter HMVC 中从另一个模块加载控制器
【发布时间】:2013-07-02 05:30:02
【问题描述】:

我在 CodeIgniter HMVC 中设置了两个模块。一个是模板,另一个是测试。

这是文件夹结构..

  1. 模板
    • 控制器
      • home.php
    • --
      • ----.php
    • 查看次数
      • 布局
        • admin.php
        • main.php
        • user.php
    • home.php
  2. 测试
    • 控制器
      • test.php

我在 routes.php 中添加了一个路由变量,它路由 home.php 作为模板的默认控制器。和自动加载的模板库。

现在当我访问http://mysite.com/templates/home/indexhttp://mysite.com/templates/ 时,它工作正常,但是当我运行另一个模块(测试)时,它显示错误。我也试过echo Modules::run('templates/home/index'); 但同样的问题。我在 test.php 中有流动的代码

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Test extends MX_Controller {


    public function index()
    {
       $this->load->module('templates');
       $this->templates->index();

    }
}

上面写着Unable to load the requested file: home.php

这是我的模板库

<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Template {

    private $template_data = array();
    private $headers = array();
    private $CI;

    public function __construct() {
        $this->CI =& get_instance();
        $this->CI->config->load('template');
    }

    function set($name, $value) {
        $this->template_data[$name] = $value;
    }

    function add_header($header) {
        array_push($this->headers, $header);
    }

    function load($template = '', $view = '', $view_data = array(), $return = FALSE) {
        $this->CI = & get_instance();
        $this->set('contents', $this->CI->load->view($view, $view_data, TRUE));
        $this->set('headers', implode('', $this->headers));
        return $this->CI->load->view($template, $this->template_data, $return);
    }

}

/* End of file Template.php */
/* Location: ./system/application/libraries/Template.php */

【问题讨论】:

    标签: php codeigniter templates hmvc


    【解决方案1】:

    似乎可以在不指定控制器名称的情况下加载模块只有控制器名称与模块名称匹配时

    控制器可以作为其他控制器的类变量加载 使用 $this->load->module('module/controller');或者干脆 $this->load->module('module');如果控制器名称与 模块名称

    https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/overview

    尝试像这样加载模块:

    $this->load->module('templates/home');
    

    【讨论】:

      猜你喜欢
      • 2017-04-15
      • 2016-07-27
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      • 2012-12-19
      • 1970-01-01
      • 2013-05-06
      • 1970-01-01
      相关资源
      最近更新 更多