Joomla :Вызов вспомогательной функции из модели?

Я начинаю с разработки как для php, так и для Joomla, и мне трудно работать в Joomla, чтобы делать довольно простые вещи. Изучили пример Joomla MVC и Lynda (и создали несколько простых представлений ).

У меня есть вспомогательный файл/класс/функция, которая выводит все идентификаторы пользователей, которые существуют в «завершенной» таблице, поэтому я могу отобразить ссылку либо на новую запись, основанную на этом пользователе, либо отредактировать запись существующего пользователя.

Я уже успешно использовал другую функцию в этом вспомогательном файле в другой части компонента(Joomla :Написать и вызвать вспомогательную функцию в компоненте).

Когда я делаю то же самое в модели, я получаю это :«Неустранимая ошибка :Вызов защищенного метода JModel ::_createFileName ()из контекста «JView» в C :\ wamp\www\illocal\libraries\joomla\application\component\view.php в строке 773". Когда я пробую это в представлении, работает нормально -, но мне нужен вывод в модели.

Код:

lookups.php

abstract class LookupHelper {

    public function other_functions($vars){
       ...
    }

    public function completions_exist() {

        $db =& JFactory::getDBO();            
        $query = $db->getQuery(true);

        $query->SELECT(' #__completed.completed_userid as UserID');
        $query->FROM (' #__completed');
        $query->GROUPBY (' #__completed.completed_userid ');

       $db->setQuery($query);    
       $result = $db->loadResultArray(0); 

       return $result;                        

    }        
}

В модели:

$completions_exist = Jview::loadHelper('lookups'); 
$completions_exist = LookupHelper::completions_exist();

Эта строка выдает ошибку:$completions_exist = Jview::loadHelper('lookups');

Я нашел несколько очень расплывчатых ссылок на то, что называется JLoader ::зарегистрируйтесь для извлечения вспомогательных функций, но не могу найти никакой хорошей документации по этому поводу в Joomla, за исключением того, что все говорят просто использовать это. Итак, я попытался использовать его так :

 JLoader::register('LookupHelper', dirname( JPATH_COMPONENT_ADMINISTRATOR).DS.'helpers'.DS.'lookups.php');
 $completions_exist = LookupHelper::completions_exist();

, который выдает эту ошибку :«Неустранимая ошибка :Класс« LookupHelper »не найден в C :\wamp\path\to\model\not\to\lookups.php Пробовал манипулировать JLoader ::регистр (все здесь )и это не влияет на путь сообщения об ошибке.

Мысли? Почему это работает в представлении, а не в модели? Как это сделать? Я использую вспомогательные функции в модели?

Спасибо!

##### РЕДАКТИРОВАТЬ

Благодаря @cppl похоже, что это проблема пути со вторым битом кода. Также я читал, что.DS. нотация будет прекращена в будущих версиях -, поэтому работает код:

JLoader::register('LookupHelper', JPATH_COMPONENT_ADMINISTRATOR.'/helpers/lookups.php');
$completions_exist = LookupHelper::completions_exist();

5
задан Community 23 May 2017 в 12:33
поделиться