изменение codeigniter base_url от контроллера - PullRequest
1 голос
/ 21 октября 2011

Есть ли способ установить мой base_url() с моего контроллера?

ИЛИ Могу ли я установить свой base_url Dynamic?

Как мне этого добиться?

Ответы [ 3 ]

14 голосов
/ 21 октября 2011

После поиска я нашел решение.да, мы можем изменить base_url из нашего контроллера следующим образом:

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

Ссылка: Руководство пользователя

Пусть этот ответ кому-нибудь поможет.

2 голосов
/ 21 октября 2011

ОК, так что это было весело, но это может не сработать и / или сломать все остальные вещи. Но, если вы сделаете эти изменения в соответствующих файлах, у вас может быть несколько базовых настроек конфигурации url в файле конфигурации, например:

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

, который можно назвать как base_url('','default');//produces <a href="http://firstbase.xyz" rel="nofollow">http://firstbase.xyz</a>.

Кажется, намного проще / лучше использовать $this->config->set_item('base_url','http://abc.com/xyz') ;, как вы нашли в документации.


system / helpers / url_helper.php: строка ~ 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;
}
2 голосов
/ 21 октября 2011

Базовый URL-адрес задается в вашем конфигурационном файле, поэтому вы можете обновить переменную $ config с ваших контроллеров перед вызовом base_url().

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

РЕДАКТИРОВАТЬ

Конечно, я не проверял это, поэтому не знаю, будет ли перезапись работать так, как ожидалось.

Вы всегда можете расширить помощник по URL своим собственным классом.и переопределить метод base_url.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...