如何将模块化扩展 wiredesignz 添加到 codeigniter 3.0
How to add modular extension wiredesignz to codeigniter 3.0
我正在尝试添加第三方扩展以使用 Codeigniter 3.0 创建 HMVC 应用程序
但是当我将 MY_Loader
和 MY_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;
}
打开文件 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)));
我正在尝试添加第三方扩展以使用 Codeigniter 3.0 创建 HMVC 应用程序
但是当我将 MY_Loader
和 MY_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;
}
打开文件 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)));