Joomla:在组件中编写和调用助手函数

Joomla:在组件中编写和调用助手函数,joomla,joomla1.7,joomla1.6,joomla2.5,joomla-component,Joomla,Joomla1.7,Joomla1.6,Joomla2.5,Joomla Component,初出茅庐的Joomla/PHP开发人员,对如何做到这一点有着深刻的理解。我在搜索中发现的所有东西都是针对Joomla或其他框架的旧版本,所以第一次搜索时就让人感到困惑 我希望有一个助手函数,我可以从我的组件中的任何地方调用它。基本上,它接受用户ID输入并返回他们的全名,比如说头发颜色和高度。下面是函数: function get_profile_info($userID) { $db =& JFactory::getDBO(); $q

初出茅庐的Joomla/PHP开发人员,对如何做到这一点有着深刻的理解。我在搜索中发现的所有东西都是针对Joomla或其他框架的旧版本,所以第一次搜索时就让人感到困惑

我希望有一个助手函数,我可以从我的组件中的任何地方调用它。基本上,它接受用户ID输入并返回他们的全名,比如说头发颜色和高度。下面是函数:

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;
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;
           }
    }
然后在my default.php中(可能会移动到view.html.php):

所以…它正在工作-但似乎有一种更简单的方法可以做到这一点(特别是手动创建一个数组,然后按位置调用)。想法

谢谢

  • 创建helper类并在其中包含所有函数:

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

  • 调用函数并存储结果:

    $var=HelloWorldHelper::get_profile_info($thatId)


  • 不可能在所有组件都在调用的现有helper Joomla文件中编写helper类吗


    默认情况下,Joomla会让助手类做一些事情,所以您所要做的就是用自己的类扩展核心助手类。

    谢谢!我这样做了(我想我正确地调用了lookups.php)并编辑了我的回答-它正在工作,但我认为我缺少了一种更简单的方法。@Shaz,这是一种无用的链接,该链接只会将您带到Joomla文档,而不是特定于他的问题的文档。你能说得更具体一点吗,joomla文档在哪里谈到了为MVC组件构建助手类?上面问题中添加的线索帮助我完成了这项工作——除了一件事。对于Joomla3,使用JViewLegacy::loadHelper('filename')代替Jview(如上所述)
    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;
               }
        }