Joomla:在组件中编写和调用助手函数
初出茅庐的Joomla/PHP开发人员,对如何做到这一点有着深刻的理解。我在搜索中发现的所有东西都是针对Joomla或其他框架的旧版本,所以第一次搜索时就让人感到困惑 我希望有一个助手函数,我可以从我的组件中的任何地方调用它。基本上,它接受用户ID输入并返回他们的全名,比如说头发颜色和高度。下面是函数:Joomla:在组件中编写和调用助手函数,joomla,joomla1.7,joomla1.6,joomla2.5,joomla-component,Joomla,Joomla1.7,Joomla1.6,Joomla2.5,Joomla Component,初出茅庐的Joomla/PHP开发人员,对如何做到这一点有着深刻的理解。我在搜索中发现的所有东西都是针对Joomla或其他框架的旧版本,所以第一次搜索时就让人感到困惑 我希望有一个助手函数,我可以从我的组件中的任何地方调用它。基本上,它接受用户ID输入并返回他们的全名,比如说头发颜色和高度。下面是函数: function get_profile_info($userID) { $db =& JFactory::getDBO(); $q
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;
}
我把它放在一个名为“lookups.php”的文件中,在我的组件的“helpers”文件夹中……但我不确定接下来该怎么做。lookups.php的顶部必须包含以下内容:
<?php defined ( '_JEXEC' ) or die;
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;
}
}
然后在my default.php中(可能会移动到view.html.php):
所以…它正在工作-但似乎有一种更简单的方法可以做到这一点(特别是手动创建一个数组,然后按位置调用)。想法
谢谢
不可能在所有组件都在调用的现有helper Joomla文件中编写helper类吗
默认情况下,Joomla会让助手类做一些事情,所以您所要做的就是用自己的类扩展核心助手类。谢谢!我这样做了(我想我正确地调用了lookups.php)并编辑了我的回答-它正在工作,但我认为我缺少了一种更简单的方法。@Shaz,这是一种无用的链接,该链接只会将您带到Joomla文档,而不是特定于他的问题的文档。你能说得更具体一点吗,joomla文档在哪里谈到了为MVC组件构建助手类?上面问题中添加的线索帮助我完成了这项工作——除了一件事。对于Joomla3,使用JViewLegacy::loadHelper('filename')代替Jview(如上所述)
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;
}
}