在同一CodeIgniter 3x应用程序上使用多个数据库并发出URI路由问题

时间:2016-06-02 10:47:26

标签: php .htaccess codeigniter url-rewriting url-routing

我正在开发一个小型Web应用程序。在我的应用程序中,我遵循以下方法。

系统概述

  1. 应用程序将托管在服务器上,例如(www.example.com)
  2. 微软,Cocacola,IBM等客户将注册。客户端将使用此类网址(www.example.com/ibm)
  3. 访问该应用程序
  4. 每个客户端都有单独的数据库来存储他们的数据。
  5. 如果客户的员工想要登录系统,则网址格式应如下所示: (www.example.com/ibm/user/login) ibm - 是客户 用户 - 是控制器 login - 是用户控制器的方法
  6. 我问了同样的问题,我修复并发布了答案: CodeIgniter Help - using multiple database on same application and issue with URI Routing

    我的解决方案适用于CodeIgniter 2.X,但遗憾的是不适用于CodeIgniter 3.X。

    如何在CodeIgniter 3.X中实现这一点?

1 个答案:

答案 0 :(得分:0)

我找到了这个解决方案。

  1. 在文本编辑器中打开system / core / router.php。
  2. 转到第335行....功能_validate_request($ segments)
  3. 用此代码替换_validate_request函数。

    protected function _validate_request($segments)
    {
        if(count($segments)===1)
        {
            $segments[0]='';
        }
        if(count($segments) > 1)
        {
            $x=$segments;
            $a=1;
            for($i=0;$i<(count($segments)-1); $i++)
            {
                $segments[$i]=$x[$a];
                $a++;
            }
            unset($segments[$i]);
        }
        $c = count($segments);
        // Loop through our segments and return as soon as a controller
        // is found or when such a directory doesn't exist
        while ($c-- > 0)
        {
            $test = $this->directory.ucfirst($this->translate_uri_dashes === TRUE ? str_replace('-', '_', $segments[0]) : $segments[0]);
    
        if ( ! file_exists(APPPATH.'controllers/'.$test.'.php') && is_dir(APPPATH.'controllers/'.$this->directory.$segments[0]))
        {
            $this->set_directory(array_shift($segments), TRUE);
            continue;
        }
        return $segments;
    }
    // This means that all segments were actually directories
    return $segments;
    
    }