3

初出茅庐的 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;                   
}

我会把它放在我组件的“helpers”文件夹中的一个名为“lookups.php”的文件中......但这里我不确定下一步该做什么。lookups.php 的顶部有强制性:

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

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

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

谢谢!

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

编辑:基于@Shaz 在下面的回复,这就是我所在的位置(再次,刚刚开始并试图围绕其中的一些内容进行思考):

查找.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];

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

谢谢!!

4

2 回答 2

2
  1. 创建助手类并在其中包含所有功能:

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

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

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

于 2012-03-17T14:48:11.117 回答
0

不可能在所有组件都在调用的现有帮助程序 Joomla 文件中编写您的帮助程序类吗?

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

于 2012-03-17T14:53:56.140 回答