CHttpRequest BaseUrl не понятно

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
SpiLLeR
Сообщения: 350
Зарегистрирован: 2009.09.17, 16:47
Откуда: Санкт-Петербург
Контактная информация:

CHttpRequest BaseUrl не понятно

Сообщение SpiLLeR »

Пытаюсь в конфиге настроить baseUrl:

Код: Выделить всё

'request' => array(
            'baseUrl' => 'http://test.loc',
        ), 
При этом перестает работать роутинг, все ссылки ведут на главную страницу.
Если же в BaseController устанавливают baseUrl, то все нормально:

Код: Выделить всё

    public function init() {
        Yii::app()->request->setBaseUrl('http://test.loc');
    } 
В чем может быть дело?
Предупрежден - значит вооружен.
devKP.ru
featZima
Сообщения: 3
Зарегистрирован: 2010.02.04, 15:20

Re: CHttpRequest BaseUrl не понятно

Сообщение featZima »

присоединяюсь к вопросу...
SpiLLeR
Сообщения: 350
Зарегистрирован: 2009.09.17, 16:47
Откуда: Санкт-Петербург
Контактная информация:

Re: CHttpRequest BaseUrl не понятно

Сообщение SpiLLeR »

Раз ни кто не сталкивался, интересно кто как устанавливает данное свойство?
Предупрежден - значит вооружен.
devKP.ru
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: CHttpRequest BaseUrl не понятно

Сообщение Ekstazi »

А зачем ? Оно же вроде автоматом и так ставится :)
SpiLLeR
Сообщения: 350
Зарегистрирован: 2009.09.17, 16:47
Откуда: Санкт-Петербург
Контактная информация:

Re: CHttpRequest BaseUrl не понятно

Сообщение SpiLLeR »

хМ... у меня не чего автоматически не устанавливает =/
Если самому не установить, то там пустая строка.

update
Посмотрел что делает getBaseUrl и понял, что получить то, что я хочу можно написав Yii::app()->request->getBaseUrl(true); тогда он вернет http://test.loc.
Если не указать true, то он вернет пустую строку. Не очень удобно каждый раз это писать))
Предупрежден - значит вооружен.
devKP.ru
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: CHttpRequest BaseUrl не понятно

Сообщение slavcodev »

а что видим?

Код: Выделить всё

echo Yii::app()->urlManager->baseUrl; 
Жду Yii 3!
SpiLLeR
Сообщения: 350
Зарегистрирован: 2009.09.17, 16:47
Откуда: Санкт-Петербург
Контактная информация:

Re: CHttpRequest BaseUrl не понятно

Сообщение SpiLLeR »

Пустая строка...

Код: Выделить всё

    public function getBaseUrl($absolute=false)
    {
        if($this->_baseUrl===null)
            $this->_baseUrl=rtrim(dirname($this->getScriptUrl()),'\\/');
        return $absolute ? $this->getHostInfo() . $this->_baseUrl : $this->_baseUrl;
    } 
$this->getScriptUrl() - возвращает /index.php
Предупрежден - значит вооружен.
devKP.ru
featZima
Сообщения: 3
Зарегистрирован: 2010.02.04, 15:20

Re: CHttpRequest BaseUrl не понятно

Сообщение featZima »

А что делать в таком случае?
- если сайт помещается в директорию "wwwroot/ru/" (поместить сайт в корень не предоставляется возможным)
- с помощью .htaccess все запросы c корня сайта перенаправляются в "wwwroot/ru/" (не хочется чтобы частица "ru" была в адресной строке)
Проблема в следующем, чтобы поддерживать такую структуру фрейморк должен правильно разбирать пути и правильно генерировать ссылки:
- правильно генерировать ссылки удалось заставить его с помощью установки baseURL в конфигурационном файле
- а вот разбирать пути он никак не хочет научиться и при любом http://domain/control/index запускает контроллер по умолчанию

Подскажите пожалуйста как это можно пофиксить?
eresik
Сообщения: 44
Зарегистрирован: 2010.10.23, 10:39

Re: CHttpRequest BaseUrl не понятно

Сообщение eresik »

Присоединяюсь к автору темы.
Начал изучать Yii и целый вечер просидел так и не решив первый же вопрос.

Общий смысл таков -
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName' => false,
'baseUrl' => '/1',

ссылки генерятся на сайте правильно, т.е. с использованием заданного baseUrl
а разбирать пути с новым baseUrl - не хочет. Всегда запускается контроллер по умолчанию

Ещё короче - если сайт установлен в папке, как убрать имя папки из адресной строки?
pavnen
Сообщения: 3
Зарегистрирован: 2011.04.01, 06:04

Re: CHttpRequest BaseUrl не понятно

Сообщение pavnen »

Неужели за пол-года никто не поделился решением? Меня этот вопрос тоже интересует. Подозреваю, что надо использовать комбинацию BaseURL и RewriteRules, пробовал такой вариант RewriteRules:

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule !^site(/?|/.+)$ /site%{REQUEST_URI} [L]

однако он переадресовывает все запросы на главную страницу. А вот как при переадресации удалить имя папки, сохранив весь оставшийся путь запроса?
Последний раз редактировалось pavnen 2011.04.01, 15:32, всего редактировалось 1 раз.
pashkash
Сообщения: 11
Зарегистрирован: 2012.03.27, 15:29

Re: CHttpRequest BaseUrl не понятно

Сообщение pashkash »

та же проблема.. указываю в урлменеджере baseurl, после этого ссылки генерятся верно, но распарсить правильно yii их уже не может..
Skiller
Сообщения: 627
Зарегистрирован: 2011.11.27, 00:21

Re: CHttpRequest BaseUrl не понятно

Сообщение Skiller »

Вот вы некрофилы, старые темы поднимать :D pashkash смотря как указываешь, возможно нужно еще правила менеджера подправить.
pashkash
Сообщения: 11
Зарегистрирован: 2012.03.27, 15:29

Re: CHttpRequest BaseUrl не понятно

Сообщение pashkash »

Skiller писал(а):возможно нужно еще правила менеджера подправить.
с этого момента поподробнее..
менеджер для админчасти:

Код: Выделить всё

'urlManager'=>array(
            'urlFormat'=>'path',
            'showScriptName'=>false,
            'urlSuffix'=>'.html',
            'baseUrl' => '/backend',
            'rules'=>array(
                '<_c>'=>'<_c>',
                '<_c>/<_a>'=>'<_c>/<_a>',
            ),
        ),
 
чего я хочу добиться: чтобы ко всем урлам добавлялся префикс: /backend , но при этом, когда я захожу на получившийся /backend/userGroups/admin.html - путь парсился как '/backend/<_c>/<_a>'=>'<_c>/<_a>'.. сечйас же yii пишет "невозможно обработать запрос"..
Ответить