我从 php 和 Joomla 开发开始,发现在 Joomla 中工作很难做一些相当简单的事情。浏览了 Joomla MVC 示例和 Lynda(到目前为止已经构建了一些简单的视图)。
我有一个帮助文件/类/函数,它输出“已完成”表中存在的所有用户 ID,因此我可以显示基于该用户的新记录的链接或编辑现有用户的记录。
我已经在组件的不同部分成功地使用了这个帮助文件中的不同函数(Joomla:在组件中编写和调用帮助函数)。
当我在模型中做同样的事情时,我得到这个:“致命错误:从 C:\wamp\www\ilplocal\libraries\joomla\application 中的上下文'JView'调用受保护的方法 JModel::_createFileName() \component\view.php 在第 773 行”。当我在视图中尝试时,效果很好 - 但我需要模型中的输出。
代码:
查找.php
abstract class LookupHelper {
public function other_functions($vars){
...
}
public function completions_exist() {
$db =& JFactory::getDBO();
$query = $db->getQuery(true);
$query->SELECT(' #__completed.completed_userid as UserID');
$query->FROM (' #__completed');
$query->GROUPBY (' #__completed.completed_userid ');
$db->setQuery($query);
$result = $db->loadResultArray(0);
return $result;
}
}
在模型中:
$completions_exist = Jview::loadHelper('lookups');
$completions_exist = LookupHelper::completions_exist();
此行抛出错误:$completions_exist = Jview::loadHelper('lookups');
我发现一些非常模糊的引用称为 JLoader::register 以引入辅助函数,但在 Joomla 中找不到任何好的文档,除了每个人都说只使用它。所以我尝试像这样使用它:
JLoader::register('LookupHelper', dirname( JPATH_COMPONENT_ADMINISTRATOR).DS.'helpers'.DS.'lookups.php');
$completions_exist = LookupHelper::completions_exist();
引发此错误:“致命错误:在 C:\wamp\path\to\model\not\to\lookups.php 中找不到类 'LookupHelper'。尝试操纵 JLoader::register(这里的所有内容),但它没有” t 影响错误消息的路径。
想法?为什么它在视图中起作用而不在模型中起作用?如何在模型中使用辅助函数?
谢谢!
#####编辑感谢@cppl,看起来这是第二段代码的路径问题。我还读到了.DS。表示法将在未来的版本中逐步淘汰 - 所以有效的代码是:
JLoader::register('LookupHelper', JPATH_COMPONENT_ADMINISTRATOR.'/helpers/lookups.php');
$completions_exist = LookupHelper::completions_exist();