初出茅庐的 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 并获取视图 (view.html.php / default.php) 中的 Name、Hair 和 Height 值?
谢谢你!
===================================
编辑:根据 @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];
所以......它正在工作 - 但似乎有一种更简单的方法可以做到这一点(特别是手动创建一个数组,然后按位置调用)。想法?
谢谢你!!