有没有办法从控制器中设置base_url()
?
或者我可以设置base_url
Dynamic
吗?
我怎样才能实现这个目标?
答案 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;
}