Страница 1 из 1
Парсинг урл
Добавлено: 2019.08.15, 12:29
Elfer
Нужна возможность возвращать результат парсинга урл средствами Yii. Т.е. какой контроллер, какой экшн, как будто мы открыли эту страницу. Естественно, чтобы правила разбора, прописанные в конфиге учитывались.
Пример: урл = "/site/contacts". В результате получится controller id = "site", action id = "contacts".
Re: Парсинг урл
Добавлено: 2019.08.15, 16:28
ElisDN
Код: Выделить всё
$result = Yii::app()->urlManager->parseUrl($request);
Re: Парсинг урл
Добавлено: 2019.08.15, 20:32
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
Re: Парсинг урл
Добавлено: 2019.08.15, 21:53
ElisDN
Это не baseUrl, а pathOnfo.
Re: Парсинг урл
Добавлено: 2019.08.15, 22:32
Elfer
ElisDN писал(а): ↑2019.08.15, 21:53
Это не baseUrl, а pathOnfo.
Я ввожу урл, а не pathInfo. "/site/contacts" это я простейший урл привёл. Он может быть совершенно любой, к примеру такой:/user/info/username/victor.html
Средствами Yii этот урл распарсить, согласно правилам в config и я должен получить какой контроллер должен его обрабатывать, action, переменные (в нашем случае $username = victor).
Re: Парсинг урл
Добавлено: 2019.08.15, 23:47
ElisDN
Elfer писал(а): ↑2019.08.15, 22:32
Я ввожу урл, а не pathInfo.
Вы присваиваете не в "урл", а в "базовый урл". А маршрутизатор
парсит "путь". Так что передавайте в $request->setPathInfo($uri).
Re: Парсинг урл
Добавлено: 2019.08.16, 09:49
Elfer
В классе CHttpRequest нету метода setPathInfo(). Вы можете скинуть проверенный готовый код?
Re: Парсинг урл
Добавлено: 2019.08.16, 11:45
ElisDN
Elfer писал(а): ↑2019.08.16, 09:49
В классе CHttpRequest нету метода setPathInfo().
Тогда единственный вариант - отнаследоваться от CHttpRequest и переопределить метод getPathInfo() и возможно остальные используемые маршрутизатором.