gpt4 book ai didi

joomla - 获取文章时出现 JModel 错误

转载 作者:行者123 更新时间:2023-12-04 05:53:28 24 4
gpt4 key购买 nike

我正在编写一个 Joomla 2.5.3 模块。我正在尝试从 JModel 获取文章。

JModel::addIncludePath(JPATH_SITE.'/components/com_content/models', 'ContentModel');
$model =& JModel::getInstance('Article', 'ContentModel', array('ignore_request' => true));
$item =& $model->getItem((int) $id);

结果是:
Fatal error: __clone method called on non-object in /var/www/site/joomla/components/com_content/models/article.php on line 170

有谁知道为什么?

编辑:
/var/www/site/joomla/component/com_content/models/article.php 的第 170 行是
$data->params = clone $this->getState('params');

如果我这样做 var_dump($tihs->getState('params'))我得到 NULL .

最佳答案

我自己发现了错误。代码是这样的:

JModel::addIncludePath(JPATH_SITE.'/components/com_content/models', 'ContentModel');
$model =& JModel::getInstance('Article', 'ContentModel', array('ignore_request'=>true));

$appParams = JFactory::getApplication()->getParams();
$model->setState('params', $appParams);

$item =& $model->getItem($id);

错误是:
Fatal error: __clone method called on non-object in /var/www/site/joomla/components/com_content/models/article.php on line 170

看类 ContentModelArticle的源代码(在 components/com_content/models/application.php 中)我注意到函数 getItem()尝试访问变量 $params状态对象。该变量先前未初始化。
$registry = new JRegistry;
$registry->loadString($data->attribs);
$data->params = clone $this->getState('params'); // 'params' was not previously initialized! The call to clone will fail if you don't provide your own initialization.
$data->params->merge($registry);

上面的代码获取文章的私有(private)属性,然后尝试覆盖全局属性。

在调用 $model->getItem($id) 之前我通过以下行将全局文章属性提供给状态对象:
$appParams = JFactory::getApplication()->getParams();
$model->setState('params', $appParams);

现在它起作用了。

关于joomla - 获取文章时出现 JModel 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9795485/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com