Gis*_*sto 5 php mysql joomla joomla1.6 joomla2.5
我开始使用php和Joomla开发,并发现在Joomla中工作很难做一些相当简单的事情.通过Joomla MVC示例和Lynda(到目前为止已经构建了一些简单的视图).
我有一个帮助文件/类/函数,它输出"已完成"表中存在的所有用户ID,因此我可以显示基于该用户的新记录的链接或编辑现有用户的记录.
我已经在该帮助文件中成功地在组件的不同部分使用了不同的函数(Joomla:在组件中编写和调用辅助函数).
当我做同样的事情在模型中,我得到这样的:"致命错误:调用保护方法JModel :: _ createFileName()根据上下文'JView中’在C:\ WAMP\WWW\ilplocal \图书馆\的Joomla \应用第773行上的\ component\view.php".当我在视图中尝试它,工作正常 - 但我需要模型中的输出.
码:
lookups.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;
}
}
Run Code Online (Sandbox Code Playgroud)
在模型中:
$completions_exist = Jview::loadHelper('lookups');
$completions_exist = LookupHelper::completions_exist();
Run Code Online (Sandbox Code Playgroud)
这一行抛出错误: $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();
Run Code Online (Sandbox Code Playgroud)
它抛出这个错误:"致命错误:类'LookupHelper’用C未找到:\ WAMP \路径\为\型号\不是\到\ lookups.php试图操纵JLoader ::注册(这里的一切),并没有关系". t影响错误消息的路径.
思考?为什么它在视图中工作而不在模型中?如何在模型中使用辅助函数?
谢谢!
#####编辑感谢@cppl看起来像第二位代码的路径问题.我也读到了.DS.在将来的版本中将逐步删除表示法 - 所以正在运行的代码是:
JLoader::register('LookupHelper', JPATH_COMPONENT_ADMINISTRATOR.'/helpers/lookups.php');
$completions_exist = LookupHelper::completions_exist();
Run Code Online (Sandbox Code Playgroud)
让我们分解一下:
在 Joomla! 您的组件帮助程序文件应该位于“/mycomponent/helpers/lookup.php”中
JLoader::是 Joomla!方法来做到这一点,但你也可以轻松地使用 PHP,require_once例如。require_once JPATH_COMPONENT_ADMINISTRATOR.'/helpers/myfunctions.php';
你的路对吗?- 您正在提供,dirname(JPATH_COMPONENT_ADMINISTRATOR).DS.'helpers'.DS.'lookups.php'但您已经包装了组件的路径,其中dirname仅包含路径的父元素。JLoader寻找也是如此/administrator/helpers/lookups.php。
JPATH_COMPONENT_ADMINISTRATOR被初始化为 Joomla!renderComponent()在其JComponentHelper类中调用的一部分,如果您dirname在未设置时应用它,您将得到一个点(即当前目录),因此在模型中您可以传递给./helpers/lookups.php调用JLoader。
| 归档时间: |
|
| 查看次数: |
11821 次 |
| 最近记录: |