Загрузка Просмотр страницы в библиотеке в Codeigniter - PullRequest
1 голос
/ 31 января 2012

В моем codeigniter я создал библиотеку в папке библиотеки. Я хочу загрузить страницы просмотра в этой библиотеке. Как я могу это сделать?

Это мой код:

$this->load->view('view_page');

Но когда я использую этот код, я получаю сообщение об ошибке:

A PHP Error was encountered

Severity: Notice

Message: Undefined property: CI_theme_lib::$load

Filename: libraries/theme_lib.php

Line Number: 9

В чем проблема с mycode?

В строке номер 9 в библиотеке код:

$this->load->view('view_page');

Ответы [ 3 ]

5 голосов
/ 22 февраля 2012

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

например,

$CI =& get_instance();

В функциях вашей библиотеки вы можете затем используйте эту переменную для загрузки представления:

$CI->load->view('view_page'); 

Я хотел бы спросить, почему вы хотите вызывать представление в той форме, которую вы сделали, в библиотеке.Я подозреваю, что вам было бы лучше получить вызов view для возврата данных (установив 3-й параметр 'true'), а затем заставить вашу библиотеку возвращать отображаемые данные в контроллер .... Ваш подход кажется грязным, но тогда у меня нетидея, что ваша библиотека пытается сделать .....

2 голосов
/ 04 сентября 2014

Я сталкивался с вашим вопросом по другой причине. У меня, похоже, проблемы с передачей переменных в представления.Позвольте мне объяснить, прежде чем я сообщу вам ответ на вашу проблему.

Представьте, что у вас есть библиотека Emailer для отправки электронных писем, а не для сортировки в контроллере.Emailer создает внутри себя почтовую строку, используя представления.Моя проблема в том, что когда я делаю свой вызов из контроллера, например, Emailer :: send_mail ($ data, $ template), он передает переменные правильно, но когда я делаю это из другой библиотеки, представление не регистрирует переменные.LOL

Так что да, Стефан Бурзе, вам иногда хочется использовать вывод из представления иначе, чем просто возвращаться в браузер клиента.

Решение здесь.https://www.codeigniter.com/userguide2/general/views.html

в последнем разделе этой страницы есть что-то вроде

$string = $this->load->view('myfile', '', true); 

, но что-то вроде

$string = $this->load->view('myfile', $view_data, true);

должно работать тоже

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

$this->ci = & get_instance();
$string = $this->ci->load->view("myfile",$view_data,true);

кажется, что последний аргумент в списке (true) - это тот, который говорит, что он не должен отображаться в браузере, а просто создает строкус содержанием шаблона

Я знаю, что уже слишком поздно, но надеюсь, что это все еще поможет некоторым.Удачи с вашим кодом.

tomhre

0 голосов
/ 22 февраля 2012

Вы просто НЕ загружаете страницы (или «Виды») в библиотеку. Я не вижу в этом необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...