初出茅庐的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”的文件中......但是这里我不确定下一步该怎么做。查找顶部的finds.php必须具备:
<?php defined ( '_JEXEC' ) or die;
所以有两个问题: 1)我是否将所有内容都放在一个类中或将其保存为一系列函数(因为还有其他函数)?
2)如何传递userID并在视图中返回Name,Hair和Height的值(view.html.php / default.php)?
谢谢!
==================================
编辑:基于@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];
所以...它正在运行 - 但似乎有一种更简单的方法(特别是手动创建一个数组,然后按位置调用)。想法?
谢谢!
答案 0 :(得分:0)
创建帮助程序类并包含所有功能:
抽象类HelloWorldHelper { /* 功能 */ }
调用函数并存储结果:
$ var = HelloWorldHelper :: get_profile_info($ thatId);
答案 1 :(得分:0)
是不是可以在已经被所有组件调用的现有助手Joomla文件中编写助手类?
默认情况下,Joomla有助手类做东西,所以你要做的就是用自己的东西扩展核心助手类。