初出茅庐的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];
所以。。。这是可行的,但似乎有一种更简单的方法可以做到这一点(特别是手动创建一个数组,然后按位置调用)。想法?
谢谢!!
-
创建helper类并在其中包含所有函数:
抽象类HelloWorldHelper{/*函数*/}
-
调用函数并存储结果:
$var=HelloWorldHelper::get_profile_info($thatId);
是否不可能在所有组件都已调用的现有helper Joomla文件中编写您的helper类?
默认情况下,Joomla有助手类来做一些事情,所以你所要做的就是用你自己的助手类来扩展核心助手类。