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

Codeigniter HMVC + ion_auth trouble loading the config items

我敲了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 文件中。

ERROR - 2016-02-24 20:09:26 --> Query error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'as id, .name, .description JOIN ON .=.id WHERE . = '2'' at line 1 - Invalid query: SELECT . as id, .name, .description JOIN ON .=.id WHERE . = '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');

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

这是在文件 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 参数时,该函数检查两个参数是否在配置中初始化,returns config[$index] CI 实例;或 null 如果其中任何一个未初始化。

如果 CI 实例中没有设置 config[$item],函数 returns 总是 null。让我们假设情况并非如此,因为您的呼叫在避免 $index.

时不会崩溃

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

此致