![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
eee |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 14.4.2008 Где: ХарьковCity Репутация: нет Всего: 1 |
Вечер добрый, обращаюсь за помощью в разборе GET-запроса. Но об этом кричит заголовок, поэтому:
Нужно разобрать QUERY_STRING, в ней есть route. Есть еще rewrite-правило "RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]". Разобрав route я получаю имя вызываемого контроллера и действия. А теперь внимание, вопрос: Подскажите, пожалуйста, как из этой строки запроса выхватить другие параметры, что бы потом передать их действию. Т. е., например:
Распарсить один параметр не составляет труда, а если больше?
Как поступить в таком случае? Сам роутер выглядит так:
Строка запроса выглядит так: http://example.com/controller/action/param1/..../paramN Надеюсь на вашу помощь, как распарсить, а именно, как передать действию все имеющиеся в запросе параметры. Это сообщение отредактировал(а) eee - 16.10.2009, 01:15 |
||||||
|
|||||||
brother79 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 471 Регистрация: 18.8.2009 Репутация: 2 Всего: 6 |
Ну прежде всего - что за контроллер - наверно какой-то фреймворк, там есть свои возможности.
2) ничего не мещает в RewriteRule задать более сложное правило на регулярке, чтобы твои параметры передавались как-то отдельно 3) на php есть замечательная ф-я explode, с её помощью как раз распарсить данный вормат - труда не составляет |
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
не, не фреймворк.
это он сам, по ходу, так пишет сколько я ни пытался продраться через все эти шпрехен зи дойч, но даже разбор одного аргумента так и не увидел причем, как я понял, параметры у него не именованные. поэтому узнать, есть та id, или нету - действительно, проблематично при чем здесь GET-запрос и QUERY_STRING - тоже непонятно. поскольку в них и так всегда лежит ровно один параметр, и разбирать там нечего. Это сообщение отредактировал(а) Ипатьев - 16.10.2009, 10:47 |
|||
|
||||
brother79 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 471 Регистрация: 18.8.2009 Репутация: 2 Всего: 6 |
мне проект приходилось доделывать, там так и происходит перётся строка исходная, запихивается параметром в какойнь-дь index.php и разбирается у же в нём на кирпичики, типа своебразный роутинг универсальный. Метод правда жутко извращённый изврашённый, но работает, хотя я бы лучше вызываемый модуль и action в htaccess извлёк, а параметры - уже можно и так передать. |
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
а что извращенного-то?
при добавлении нового модуля в систему каждый раз .htaccess править лучше? Это сообщение отредактировал(а) Ипатьев - 16.10.2009, 13:16 |
|||
|
||||
eee |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 14.4.2008 Где: ХарьковCity Репутация: нет Всего: 1 |
Эмм, ну во-первых, спасибо что откликнулись. А теперь пошагово.
Нет, это не фреймворк - как верно предположил Ипатьев, это я сам так пишу). Я был бы очень признателен за пример подобного rewrite-правила. Распарсить труда и так не составляет, ступор наступает в момент передачи параметров действию. Изначально (пока не дошел до реализации) предполагал, что $this->getController($file, $controller, $action, $args); будет заносить в array $args все параметры найденные в строке запроса. Т.е. в случае http://example.com/controller/action/param1/..../paramN:
А теперь вот думаю, что может быть имеется более логичное решение.
Да, извините, это я Вас запутал. Здесь участвует только $_GET['route']. Вот его содержимое и разбивается. Проблема еще актуальна. Все еще прошу помочь(. |
||||||
|
|||||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
"я все сделал, но жду более логичное" - это не актуальная проблема, а, извините, мозго%#$^@.
Добавлено через 5 минут и 22 секунды На самом деле не нас, а себя. И вот это, насколько я могу судить - как раз актуальная проблема. Вы не очень понимаете сами, чего хотите. А без этого двигаться куда-либо бессмысленно. И снова о необходимости алгоритмов пхп-программисту. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |