Joomla: написать и вызвать вспомогательную функцию в компоненте - PullRequest
1 голос
/ 17 марта 2012

Новичок в Joomla / PHP-разработчике, пытающийся понять, как это сделать.Все, что я нашел в поиске, было для старых версий Joomla или других фреймворков, и поэтому все это сбивает с толку первый раз.

Я хочу иметь вспомогательную функцию, которую я могу вызывать из любого места в моем компоненте.По сути, он принимает ввод идентификатора пользователя и возвращает его полное имя, скажем, цвет волос и рост.Вот функция:

function get_profile_info($userID) {

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

        $query->SELECT('u.id as UserID
                    , u.name AS Name
                    , up.profile_value AS Hair
                    , up2.profile_value AS Height
                    ');
        $query->FROM (' #__users AS u');
        $query->LEFTJOIN (' #__user_profiles AS up ON u.id = up.user_id AND up.ordering = 1');
        $query->LEFTJOIN (' #__user_profiles AS up ON u.id = up.user_id AND up.ordering = 2');
        $query->WHERE(' u.id = '.$userID.'');
        $query->GROUPBY (' u.id
                    , u.name
                    , up.profile_value
                    ');


       $db->setQuery($query);   
       return $query;                   
}

Я бы поместил это в файл под названием «lookups.php» в папке «helpers» моего компонента ... но здесь я не уверен, что делатьследующий.В верхней части lookups.php есть обязательное:

<?php defined ( '_JEXEC' ) or die;

Итак, два вопроса: 1) Я все помещаю в класс или сохраняю как серию функций (так как будут другие)?

2) Как передать userID и вернуть значения Name, Hair и Height в представлении (view.html.php / default.php)?

Спасибо!

========================================

Редактировать: На основеОтвет @Shaz ниже здесь, где я нахожусь (опять же, просто начинаю и пытаюсь обернуть мою голову вокруг некоторых из них):

lookups.php

abstract class LookupHelper {

        var $Name;
        var $Hair;
        var $Height;

    public function get_profile_info($userID) {
                ... 
                (same as above until the next line)

                $db->setQuery($query);
                $result=$db->loadRow();
                $Name = $result[1];
                $Hair = $result[2];
                $Height = $result[3];
        $getprofileinfo = array(Name=>$Name, Hair=>$Hair, Height=>$Height);
                $return $getprofileinfo;
           }
    }

Тогда по умолчанию.php (вероятно, переместится в view.html.php):

    $getprofileinfo = Jview::loadHelper('lookups'); //got an error without this
    $getprofileinfo = LookupHelper::get_profile_info($userID);

    $Name = $getprofileinfo[Name];
    $Hair = $getprofileinfo[Hair];
    $Height = $getprofileinfo[Height];

Итак ... это работает - но кажется, что есть гораздо более простой способ сделать это (в частности, создание массива вручную, а затем вызовпозиция).Мысли?

Спасибо !!

Ответы [ 2 ]

0 голосов
/ 17 марта 2012

Невозможно написать свой вспомогательный класс внутри существующего вспомогательного файла Joomla, который уже вызывается всеми вашими компонентами?

По умолчанию в Joomla есть вспомогательные классы, которые делают вещи, поэтому все, что вам нужно сделать, эторасширить основные вспомогательные классы своими собственными.

0 голосов
/ 17 марта 2012
  1. Создайте вспомогательный класс и включите в него все свои функции:

    абстрактный класс HelloWorldHelper {/ * functions * /}

  2. Вызовите функцию и сохраните результат:

    $ var = HelloWorldHelper :: get_profile_info ($ thatId);

...