Пользовательские библиотеки PyroCMS и CI SuperObject - PullRequest
0 голосов
/ 17 ноября 2011

Это должно быть просто, но это не так.

У меня есть библиотека, которая надеется использовать другие библиотеки, но что-то не работает.

Обе библиотеки живут в system / cms / library, потому что, насколько я могу судить, addons / shared_addons / library совершенно бесполезна и библиотеки должны быть автоматически загружены (кажется, что system / cms - это, по сути, system / application)но, пожалуйста, поправьте меня, если ошиблись).Кроме того: просто ради удовольствия я помещаю библиотеку в shared_addons / libaries, чтобы посмотреть, могу ли я вызвать if из модуля;Я не могПочему это там?

Lib1
-needs db
-needs lib2

Lib2
-needs session

Вот что происходит.Контроллер [модуль] загружает;вызывает lib1, который вызывает lib2, который выдает ошибку.Lib1 вызывается всеми контроллерами модулей.Lib2 использует данные сеанса, которые установлены ранее, и вызывается только lib1.

В lib2 я использую $ CI = get_instance (), чтобы предположительно включить библиотеки CI (например, базу данных, сеанс).Однако я не могу пройти мимо "Неустранимая ошибка: вызов функции-члена userdata () для необъекта";который вызывается

//system/cms/libraries/lib2.php
$this->CI =& get_instance();
//$this->load->library('database'); == "can't find class database"
$ekeyLoc = $this->CI->session->userdata('ronery'); 

Теперь, если я запускаю это в контроллере модуля, он работает как положено.

Так что погуглив эту ошибку, появляется много "db notloaded".Просто чтобы убедиться, что я попытался загрузить базу данных, но потому, что я не могу найти класс 'database' NB: база данных загружается автоматически.

Когда вы назначаете суперобъект CodeIgniter, я предполагаю, что он захватывает весь jabloney, верно?Я так и думал.Но чтобы убедиться, я решил попробовать загрузить класс базы данных в модуль / контроллер, что, как оказалось, не может быть найдено.

Я пытался просматривать документы pyroCMS, чтобы узнать о каких-либо хитростях, но ничего не помогло в моей ситуации.

Почему я не могу загрузить библиотеку ядра изконтроллер модуля?

Почему я не могу загрузить базовую библиотеку в пользовательскую библиотеку в system / cms / library?

Почему суперобъект CodeIgniter, который я назначаю, не содержит session / dbдерьмо?

Почему я не могу загрузить библиотеку из / addons / shared_addons / library?

Почему вызов $this->session->userdata() будет работать из контроллера модуля, а не из библиотеки впапка system / cms / library, хотя суперобъект CodeIgniter был назначен?

Спасибо.


Через 2 дня без ответа я нахожу это разочаровывающим и веселым, что продолжаюПоиск помощи неизбежно приводит к тому, что этот вопрос является лучшим результатом Google.FML.

1 Ответ

0 голосов
/ 17 ноября 2011

Перво-наперво:

$this->load->library('database');

Это недопустимый код CodeIgniter, как указано в их документации:

$this->load->database();

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

Почему я не могу загрузить библиотеку ядра из контроллера модуля?

Можно.

Почему я не могу загрузить основную библиотеку в пользовательскую библиотеку в system / cms / library?

Можно.

Почему нетсуперобъект CodeIgniter, который я назначаю, содержит сессионную / дБ хрень?

Да.

Почему я не могу загрузить библиотеку из / addons / shared_addons / library?

Это не было возможно в 1.3.x, но должно было быть исправлено в 1.3.2, если бы не было исправлено с тех пор в 2.0.

Я не знаю, что вы делаете илипочему у вас возникают такие проблемы, но без примера кода или описания какой версии PyroCMS вы используете, я больше не могу помочь.

ЕслиВы застряли на два дня, почему вы не разместили на наших форумах?Если вы ПЕРЕДАЛИ на наших форумах (я ничего не видел об этом), вы должны были поместить ссылку в этом сообщении в ветку форума, чтобы помочь другим людям ответить на вопросы.

Это не первый разкто-нибудь застрял в интернете, но вы действуете так, как есть.Давай, ты знаешь, как это работает!:)

...