Парсинг урл

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

Парсинг урл

Сообщение Elfer » 2019.08.15, 12:29

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

Аватара пользователя
ElisDN
Сообщения: 5355
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

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

Сообщение ElisDN » 2019.08.15, 16:28

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

$result = Yii::app()->urlManager->parseUrl($request);

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

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

Сообщение Elfer » 2019.08.15, 20:32

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
Сообщения: 5355
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

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

Сообщение ElisDN » 2019.08.15, 21:53

Это не baseUrl, а pathOnfo.

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

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

Сообщение Elfer » 2019.08.15, 22:32

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
Сообщения: 5355
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

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

Сообщение ElisDN » 2019.08.15, 23:47

Elfer писал(а):
2019.08.15, 22:32
Я ввожу урл, а не pathInfo.
Вы присваиваете не в "урл", а в "базовый урл". А маршрутизатор парсит "путь". Так что передавайте в $request->setPathInfo($uri).

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

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

Сообщение Elfer » 2019.08.16, 09:49

В классе CHttpRequest нету метода setPathInfo(). Вы можете скинуть проверенный готовый код?
Приколы: юмор, анекдоты - Zasmeshi.Ru сайт на Yii, великие возможности фреймворка.

Аватара пользователя
ElisDN
Сообщения: 5355
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

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

Сообщение ElisDN » 2019.08.16, 11:45

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

Ответить