Joomla:在组件中编写并调用辅助函数

时间:2012-03-17 14:24:47

标签: joomla joomla1.7 joomla1.6 joomla2.5 joomla-component

初出茅庐的Joomla / PHP开发人员,了解如何执行此操作。我发现搜索的所有内容都是旧版本的Joomla或其他框架,所以第一次这一切都让人感到困惑。

我想要一个帮助函数,我可以在我的组件中的任何地方调用它。基本上它需要一个userID输入并返回它们的全名,比方说发色和高度。这是功能:

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;                   
}

我将它放在我的组件的“helpers”文件夹中名为“lookups.php”的文件中......但是这里我不确定下一步该怎么做。查找顶部的finds.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;
           }
    }

然后在我的default.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 :(得分:0)

  1. 创建帮助程序类并包含所有功能:

    抽象类HelloWorldHelper {   /* 功能 */ }

  2. 调用函数并存储结果:

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

答案 1 :(得分:0)

是不是可以在已经被所有组件调用的现有助手Joomla文件中编写助手类?

默认情况下,Joomla有助手类做东西,所以你要做的就是用自己的东西扩展核心助手类。