2012-03-15 2 views
1

Я использую HMVC и Template library (от Phil Sturgeon). Возникает проблема, когда я использую Modules::run в моем коде:Библиотека HMVC и шаблонов (от Phil Sturgeon) в Codeigniter

$this->template->title("Some title")->set_partial('header', 'showmessage')->build('showanothermessage', $data); 

и showmessage.php частичный вид:

echo Modules::run("goodbye"); 

страница ошибки появляются с:

PHP-ошибка обнаружено

Степень важности: Уведомление

Сообщение: Не определено свойство: GOODBYE :: $ агента

Имя файла: библиотеки/template.php

Порядковый номер: 122

Фатальная ошибка: Вызов функции члена is_mobile() на не-объект в D: \ Бинь \ WAMP \ WWW \ CodeIgniter \ Application \ библиотеки \ template.php на линии 122

Как исправить эту проблему. Заранее спасибо.

Update Мой goodbye контроллер:

class GoodBye extends MY_Controller{ 
     function __construct(){ 
      parent::__construct(); 
     } 
     function Index(){ echo "Goodbye"; } 
} 

Мои MY_Controller:

class MY_Controller extends CI_Controller{ 
    function __construct(){ 
     parent::__construct(); 
     // default layout 
     $this->template->set_layout("home_layout"); 
    } 
} 

Мой autoload файл:

$autoload['packages'] = array(); 
$autoload['libraries'] = array('database','session','template'); 
$autoload['helper'] = array(); 
$autoload['config'] = array(); 
$autoload['language'] = array(); 
$autoload['model'] = array(); 
+0

Можем ли мы видеть контроллер 'goodbye', пожалуйста, какие-либо базовые контроллеры, которые вы распространяете вместе с ним, и ваш' autoload.php'? Это говорит о том, что библиотека пользовательского агента не загружается в 'goodbye', поскольку' modules :: run() 'выполняется независимо от текущего контроллера. –

+0

Я удалил 'parent :: __ construct();' из 'GoodBye' контроллера, и он работает. Можете ли вы объяснить, почему? – hanuman0503

+0

Честно говоря, я понятия не имею. Что говорит 'application \ libraries \ template.php строка 122'? –

ответ

0

У меня есть изменил мой MY_Controller на:

class MY_Controller extends MX_Controller{ 
    function __construct(){ 
     parent::__construct(); 
     // default layout 
     $this->template->set_layout("home_layout"); 
    } 
} 

Это сработало!

+0

http://codeigniter.com/forums/viewthread/192433/P15/#908313 для получения дополнительной информации =)) – hanuman0503

+0

Ого, я полностью пропустил это!Да, вам нужно расширить 'MX_Controller', чтобы использовать HMVC wiredesignz и воспользоваться расширенным классом Loader, Lang и т. Д. Это действительно правильно в [документации] (https://bitbucket.org/wiredesignz/codeigniter-modular-extensions -hmvc/wiki/Home): * «Чтобы использовать функциональные возможности HMVC, такие как Modules :: run(), контроллеры должны расширять класс MX_Controller." * –

Смежные вопросы