如何将模块化扩展wiredesignz添加到codeigniter 3.0

时间:2017-01-18 10:27:37

标签: php codeigniter codeigniter-3 codeigniter-hmvc

我尝试添加第三方扩展程序以使用Codeigniter 3.0创建HMVC应用程序

但是当我将MY_LoaderMY_Router个文件添加到Third_party文件夹中的核心文件夹和MX文件夹时,会产生致命错误:

  

致命错误:调用未定义的方法MY_Loader :: _ ci_object_to_array()   在C:\ xampp \ htdocs \ codeigniter \ application \ third_party \ MX \ Loader.php中   在第300行。

当我删除它们时,应用程序运行正常。是否有运行应用程序所需的其他设置?

5 个答案:

答案 0 :(得分:12)

这是因为CodeIgniter中不再存在MX / Loader.php中使用的函数。

您可以将其添加回Loader.php

protected function _ci_object_to_array($object) {
    return is_object($object) ? get_object_vars($object) : $object;
}

Source

答案 1 :(得分:3)

打开您的文件application / third_party / MX / Loader.php

protected function _ci_object_to_array($object) {
    return is_object($object) ? get_object_vars($object) : $object;
}

在Loader类中添加上述函数。

答案 2 :(得分:1)

在应用程序的第300行/ third_party / MX / Loader.php

此行生成CI 3.1.3

的错误
 return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));

替换为此行。

return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_prepare_view_vars($vars), '_ci_return' => $return));
}

答案 3 :(得分:0)

我找到了以下解决方案

在application / third_party / MX / Loader.php中,您可以更改以下内容。

在公共函数视图下($ view,$ vars = array(),$ return = FALSE)查找...(接近第300行)

return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));

将其替换为

if (method_exists($this, '_ci_object_to_array'))
{
        return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));
} else {
        return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_prepare_view_vars($vars), '_ci_return' => $return));
}

也许wiredesignz很快会发布它的更新。在此期间,您可以实现上述修复和恢复编码。

答案 4 :(得分:0)

我在/MX/Loader.php第300行上替换

return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));

使用

return (method_exists($this, '_ci_object_to_array') ? $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return)) : $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_prepare_view_vars($vars), '_ci_return' => $return)));