codeigniter base_url从控制器更改

时间:2011-10-21 14:39:40

标签: codeigniter

有没有办法从控制器中设置base_url()

或者我可以设置base_url Dynamic吗?

我怎样才能实现这个目标?

3 个答案:

答案 0 :(得分:14)

搜索后我找到了解决方案。 是的,我们可以将控制器中的base_url更改为

$this->config->set_item('base_url','http://example.com/xyz') ;

参考:User Guide

这个答案应该对某人有所帮助。

答案 1 :(得分:2)

基本网址已在您的配置文件中设置,因此您可以在致电base_url()之前更新控制器中的$ config变量。

http://codeigniter.com/forums/viewthread/60181/

修改

当然,我还没有对此进行测试,所以不知道覆盖是否会按预期工作。

您总是可以使用自己的类扩展url帮助器并覆盖base_url方法。

答案 2 :(得分:2)

好的,所以这很有趣,但它可能无法正常工作和/或打破各种其他东西。但是,如果您在相关文件中进行了这些更改,则可以在配置文件中设置多个基本URL配置设置,如下所示:

$config['base_url']['default']  = 'http://firstbase.xyz';
$config['base_url']['otherbase']    = 'http://secondbase.xyz';

可以像base_url('','default');//produces http://firstbase.xyz一样调用。

使用文档中的$this->config->set_item('base_url','http://abc.com/xyz') ;似乎更容易/更好。


system / helpers / url_helper.php:line~63

if ( ! function_exists('base_url'))
{
    function base_url($uri = '',$index='')
    {
        $CI =& get_instance();
        return $CI->config->base_url($uri,$index);
    }
}

系统/核心/ CONFIG.PHP

  

行~66

$this->set_item('base_url', $index);
  

行~175

function item($item, $index = '')
{
    if ($index == '')
    {
        if ( ! isset($this->config[$item]))
        {
            return FALSE;
        }

        $pref = $this->config[$item];
    }
    else
    {
        if ( ! isset($this->config[$index]))
        {
            return FALSE;
        }

        if ( ! isset($this->config[$index][$item]))
        {
            return FALSE;
        }

        $pref = $this->config[$index][$item];
    }

    return $pref;
}
  

行~214

function slash_item($item,$index)
{
    if ( ! isset($this->config[$item][$index]))
    {
        return FALSE;
    }
    if( trim($this->config[$item][$index]) == '')
    {
        return '';
    }
    return rtrim($this->config[$item][$index], '/').'/';
}
  

行~265

function base_url($uri = '',$index='')
{
    return $this->slash_item('base_url',$index).ltrim($this->_uri_string($uri),'/');
}
  

行~332

function set_item($item, $value, $index)
{
    $this->config[$item][$index] = $value;
}