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



初出茅庐的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"的文件中。。。但这是我不确定下一步该做什么的地方。lookups.php的顶部有强制性的:

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

所以有两个问题:1) 我是把所有东西都放在一个类中,还是把它作为一系列函数(因为还会有其他函数)?

2) 如何传递userID并在视图(view.html.php/default.php)中返回Name、Hair和Height的值?

谢谢!

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

编辑:根据@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];

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

谢谢!!

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

    抽象类HelloWorldHelper{/*函数*/}

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

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

是否不可能在所有组件都已调用的现有helper Joomla文件中编写您的helper类?

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

相关内容

  • 没有找到相关文章

最新更新