Joomla 4:在布尔值上调用成员函数setState()

时间:2019-05-10 11:41:10

标签: joomla

我正在使用夜间版本准备与Joomla 4一起运行的模块之一。我遇到了3.9版没有的问题。我在文章模型上调用函数setState并得到以下异常:

“在布尔值上调用成员函数setState()”

$ appParams不为空或任何其他内容。下面还列出了代码,标记了发生异常的行。

// Get an instance of the generic articles model
$model = JModelLegacy::getInstance('Articles', 'ContentModel', array('ignore_request' => true)); // This returns false instead of the model!

// Set application parameters in model
$app       = JFactory::getApplication();
$appParams = $app->getParams();
$model->setState('params', $appParams);

// Set the filters based on the module params
$model->setState('filter.published', 1);
$model->setState('filter.article_id', $articleIds);
$model->setState('filter.category_id', $params['eventlist_categories']);

我是否监督了一些过时的功能?感谢您的帮助!

---编辑---

我发现JModelLegacy :: getInstance()返回false-因此可能有一种新的方法来在Joomla中获取文章模型! 4,对吧?

1 个答案:

答案 0 :(得分:1)

很抱歉,之前我给您提供了一个示例,我只是偶然地在Joomla 3.9中进行了测试,后来我才意识到在Joomla 4中它不再有效。所以现在这是我刚刚测试的工作版本在Joomla 4中:

$model = $app->bootComponent('com_content')->getMVCFactory()->createModel('Articles', 'Administrator', ['ignore_request' => true]);

显然,根据我们要使用的模型,“管理员”可以更改为“站点”。

在Joomla 4中,似乎必须使用MVCFactoryInterface来创建和使用模型实例。