初出茅庐的 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];
所以......它正在工作 - 但似乎有一种更简单的方法可以做到这一点(特别是手动创建一个数组然后按位置调用)。想法?
谢谢!!