2013-07-04 4 views
2

У меня есть две установки модулей в CodeIgniter HMVC. Один из них - это шаблоны, а другой - тест.Загрузка контроллера из другого модуля в 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/index или http://mysite.com/templates/ .. он работает нормально, но когда я запускаю другой модуль (тест), он показывает ошибку. Я также пробовал echo Modules::run('templates/home/index');, но та же проблема. У меня есть текущие коды в тесте.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 */ 

ответ

4

кажется, что модуль может быть загружен без указания имени контроллера только если имя контроллера совпадает с именем модуля:

Контроллеры могут быть загружены ed как переменные класса других контроллеров с использованием модуля $ this-> load-> ('module/controller'); или просто $ this-> load-> module ('module'); если имя контроллера совпадает с именем модуля

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

Попытка загрузить модуль так:

$this->load->module('templates/home'); 
Смежные вопросы