Парсинг урл

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
Elfer
Сообщения: 132
Зарегистрирован: 2012.06.07, 16:09
Откуда: Беларусь, Лида
Контактная информация:

Парсинг урл

Сообщение Elfer »

Нужна возможность возвращать результат парсинга урл средствами Yii. Т.е. какой контроллер, какой экшн, как будто мы открыли эту страницу. Естественно, чтобы правила разбора, прописанные в конфиге учитывались.
Пример: урл = "/site/contacts". В результате получится controller id = "site", action id = "contacts".
Приколы: юмор, анекдоты - Zasmeshi.Ru сайт на Yii, великие возможности фреймворка.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Парсинг урл

Сообщение ElisDN »

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

$result = Yii::app()->urlManager->parseUrl($request);
Аватара пользователя
Elfer
Сообщения: 132
Зарегистрирован: 2012.06.07, 16:09
Откуда: Беларусь, Лида
Контактная информация:

Re: Парсинг урл

Сообщение Elfer »

ElisDN писал(а): 2019.08.15, 16:28

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

$result = Yii::app()->urlManager->parseUrl($request);
А в $request что должно быть?
Прописал следующий код:

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

$url = 'site/contacts';
$request = new CHttpRequest();
$request->setBaseUrl($url);
$result = Yii::app()->urlManager->parseUrl($request);
echo $result; // Выводит 'site/index', причём для любых примеров
! Не учитывает urlManager rules в config
Приколы: юмор, анекдоты - Zasmeshi.Ru сайт на Yii, великие возможности фреймворка.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Парсинг урл

Сообщение ElisDN »

Это не baseUrl, а pathOnfo.
Аватара пользователя
Elfer
Сообщения: 132
Зарегистрирован: 2012.06.07, 16:09
Откуда: Беларусь, Лида
Контактная информация:

Re: Парсинг урл

Сообщение Elfer »

ElisDN писал(а): 2019.08.15, 21:53 Это не baseUrl, а pathOnfo.
Я ввожу урл, а не pathInfo. "/site/contacts" это я простейший урл привёл. Он может быть совершенно любой, к примеру такой:/user/info/username/victor.html
Средствами Yii этот урл распарсить, согласно правилам в config и я должен получить какой контроллер должен его обрабатывать, action, переменные (в нашем случае $username = victor).
Приколы: юмор, анекдоты - Zasmeshi.Ru сайт на Yii, великие возможности фреймворка.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Парсинг урл

Сообщение ElisDN »

Elfer писал(а): 2019.08.15, 22:32 Я ввожу урл, а не pathInfo.
Вы присваиваете не в "урл", а в "базовый урл". А маршрутизатор парсит "путь". Так что передавайте в $request->setPathInfo($uri).
Аватара пользователя
Elfer
Сообщения: 132
Зарегистрирован: 2012.06.07, 16:09
Откуда: Беларусь, Лида
Контактная информация:

Re: Парсинг урл

Сообщение Elfer »

В классе CHttpRequest нету метода setPathInfo(). Вы можете скинуть проверенный готовый код?
Приколы: юмор, анекдоты - Zasmeshi.Ru сайт на Yii, великие возможности фреймворка.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Парсинг урл

Сообщение ElisDN »

Elfer писал(а): 2019.08.16, 09:49 В классе CHttpRequest нету метода setPathInfo().
Тогда единственный вариант - отнаследоваться от CHttpRequest и переопределить метод getPathInfo() и возможно остальные используемые маршрутизатором.
Ответить