【问题标题】:Strict Standards: Non-static method (joomla and roksprocket)严格标准:非静态方法(joomla 和 roksprocket)
【发布时间】:2013-05-08 03:36:17
【问题描述】:

Strict Standards: Non-static method K2ModelItemlist::getCategoryTree() should not be called statically, assuming $this from incompatible context in C:\xampp\htdocs\virgin\components\com_roksprocket\lib\RokSprocket\Provider\K2\Filter.php on line 151

全部

我有这个错误...我正在使用 RokSprocket、Joomla 并收到上述错误...它似乎起源于

protected function category($data)
{
if(file_exists(JPATH_SITE.'/components/com_k2/models/itemlist.php'))
require_once (JPATH_SITE.'/components/com_k2/models/itemlist.php');
$wheres = array();
foreach($data as $match){
$categories = K2ModelItemlist::getCategoryTree($match);

知道如何解决这个问题。

【问题讨论】:

  • 添加主题链接是什么意思?该站点仍在我的本地服务器上
  • 你下载了吗?
  • 我对你的要求不太清楚。你能澄清一下吗... Rocksprocket 模块是 rockettheme.com/extensions-joomla/roksprocket 而 Joomla CMS 是 joomla.org
  • 如果您对源代码有疑问,请尝试链接。

标签: php joomla strict


【解决方案1】:

K2ModelItemlist::getCategoryTree 未定义为静态。你收到了那个错误信息。

是的,您可以在文件 components/com_k2/models/itemlist.php 中自己将其定义为静态

function getCategoryTree($categories) // line 576

替换为

static function getCategoryTree($categories)

但是你必须记住每一个你自己的外部组件补丁,因为你可能会在升级后丢失它。

【讨论】:

  • 我建议您填写错误报告/问题,以便将修复合并到扩展的官方分发中:getk2: Issues。您将帮助其他有同样问题的人,而不必担心升级后会丢失更改。
  • @piotr_cz,这不是 k2 的问题,他们用对了。这是 RokSprocket 的问题,他们already know about it
  • 也许你是对的。然后解决方案是获取模型实例$model = JModelLegacy::getInstance('ItemList', 'K2Model', array('ignore_request' => true)); 并访问它的方法:$categories = $model->getCategoryTree($match); 此外,require_once 应该替换为JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_k2/models', 'K2Model');
【解决方案2】:

使 Joomla 符合严格要求的工作仍在进行中。核心在这条道路上已经走了很长一段路,但许多扩展开发人员仍然不了解当前的最佳实践。

开发环境

保持最大error_level,只需通过在function 关键字前面加上public static 来修复损坏的代码。你会在更新时失去它,但你的 VCS 会帮助你快速修复它。

生产环境

在生产系统上,error_reporting 可以降低到不包含严格警告。将服务器配置为记录错误而不是显示错误。

【讨论】:

猜你喜欢
  • 2023-03-31
  • 2013-03-31
  • 2015-05-08
  • 2013-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多