Codeigniter HMVC + ion_auth加载配置项时遇到问题

时间:2016-02-24 16:56:56

标签: codeigniter hmvc codeigniter-hmvc

我一直在敲我的头5个小时,我终于解决了问题,但我不知道原因就睡不着。我先解释一下这个问题。

我使用了codeigniter HMVC扩展并安装了ion_auth作为单独的模块。

|-modules
|--auth
|---config
|-----ion_auth.php
|---controllers
|-----auth.php
|---models
|-----ion_auth_model.php
|---views

当我尝试获取用户的组时,我开始遇到有线SQL错误。然后我缩小了问题范围,并发现config/ion_auth.php中的项目未加载到ion_auth_model.php文件中。

  

错误 - 2016-02-24 20:09:26 - >查询错误:您的错误   SQL语法;查看与MySQL服务器对应的手册   在'as id,。name附近使用正确语法的版本,   。description加入。=。id在哪里。第1行='2' - 无效   查询:SELECT。作为id,。name,。description加入。=。id   在哪里='2'

然后我尝试了几个东西,当我从中删除索引'ion_auth'时 一切方法调用ion_auth_model.php一切都开始奏效了。

我改变了

$this->tables  = $this->config->item('tables', 'ion_auth');
$this->join            = $this->config->item('join', 'ion_auth);

$this->tables  = $this->config->item('tables');
$this->join            = $this->config->item('join');

谁能告诉我它为什么有用?

1 个答案:

答案 0 :(得分:1)

这是在文件system \ core \ Config.php中找到的CodeIgniter函数config-> item()的内部实现

/**
 * Fetch a config file item
 *
 * @param   string  $item   Config item name
 * @param   string  $index  Index name
 * @return  string|null The configuration item or NULL if the item doesn't exist
 */
public function item($item, $index = '')
{
    if ($index == '')
    {
        return isset($this->config[$item]) ? $this->config[$item] : NULL;
    }

    return isset($this->config[$index], $this->config[$index][$item]) ? $this->config[$index][$item] : NULL;
}

当您传递$index参数时,该函数会检查两个参数是否在配置中初始化并返回CI实例的config[$index];或null如果其中任何一个未初始化。

如果CI实例中未设置config[$item],则该函数始终返回null。我们假设情况并非如此,因为在避免$index时,您的呼叫不会崩溃。

因此,当您将$index作为第二个参数传递时,您的代码会崩溃,因为该函数返回null,这意味着未设置CI实例的config[$index]。现在问题是为什么它没有设置,我在这里无法帮助你,但看起来你缺少加载一些模块。

祝你好运