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

How to add modular extension wiredesignz to codeigniter 3.0

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

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

Fatal error: Call to undefined method MY_Loader::_ci_object_to_array() in C:\xampp\htdocs\codeigniter\application\third_party\MX\Loader.php on line 300.

当我删除它们时,应用程序运行良好。获取应用程序是否需要任何其他设置?运行?

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

您可以将其添加回 Loader.php

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

Source

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

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

在加载器中添加以上功能class。

我找到了以下解决方案

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

在public function view($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会很快发布它的更新。同时,您可以实施上述修复和恢复编码。

第 300 行 application/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));
}

我替换 /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)));