Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Получение данных из адресной строки
Покинул форум
Сообщений всего: 19
Дата рег-ции: Июль 2014
Помог: 0 раз(а)
Добрый день.
есть правила формирование урлов:
(:id)-(:slug) или например (:slug)-(:id), или просто (:slug) или просто (:id)
т.е. урлы будут такими
1-news-rusiia
или
news-russia-1
или
news-rusiia
или
1
Проблема заключается в том, как вытянуть (:slug) и (:id).
Делаю так
Тут я в тупике, подскажите более рациональное решение, чем плодить кучу условий по проверке.
Исходя из шаблона формирования урлов в $matches[1] или $matches[2] будут всегда разные данные. Поэтому я не могу точно сказать что находится в массиве.
Таким образом сложно получить на выходе :
$id, $slug
Подскажите как решть данную проблему.
Наверное меня неправильно поняли. Допустим в админке я выбрал шаблон формирование урлов (:id)-(:slug), все ссылки поменяли вид на данный шаблон. Но чтобы избежать дублирования страниц мне необходимо проверить значения id и slug на предмет принадлежности к одной и той же записи.
Что вы понимаете под "четко структурировать Ваши урлы."?
Я хочу иметь возможность менять урлы, но с привязкой к конкретному контролеру/методу.
Покинул форум
Сообщений всего: 67
Дата рег-ции: Авг. 2010
Помог: 3 раз(а)
Ну тогда нужно в каких-то конфигах описывать в каком шаблоне, что за чем следует. У Вас же не будет несколько шаблонов работать одновременно. Например в одном шаблоне первым идет контроллер, потом метод, потом параметры, а в другом наоборот, сначала метод потом контроллер. Хотя везде сначала идет контроллер потом метод. Как может быть метод без контроллера?
Specter
Отправлено: 09 Августа, 2014 - 14:39:56
Новичок
Покинул форум
Сообщений всего: 19
Дата рег-ции: Июль 2014
Помог: 0 раз(а)
Object пишет:
Ну тогда нужно в каких-то конфигах описывать в каком шаблоне, что за чем следует. У Вас же не будет несколько шаблонов работать одновременно. Например в одном шаблоне первым идет контроллер, потом метод, потом параметры, а в другом наоборот, сначала метод потом контроллер. Хотя везде сначала идет контроллер потом метод. Как может быть метод без контроллера?
Правила динамически цепляются при инициализации. С этим проблем нет. Все структурировано.
Мне нужно получить значения id и slug, исходя из правил роутинга, чтобы получить данные из бд.
Грубо говоря мне нужно получить значения id и slug.
Есть какое либо правило в переменной.
Правило мб: (:id)-(:slug), или (:slug)-(:id), или (:slug), или (:id)
Мы знаем это правило.
Есть значение урла, сформированного исходя из этого правила.
Например правило (:id)-(:slug) -> урл: 22-news-nokia
В переменную $id нужно получить 22, а в $slug = news-nokia
Другой вариант, правило (:slug) -> урл:news-nokia
В $id = null; $slug = news-nokia
но в matches я не могу четко определить, есть ли id, есть ли slug и т.п.
DelphinPRO
Отправлено: 10 Августа, 2014 - 17:27:52
Активный участник
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
Извиняюсь, невнимательно прочел. Вы и так регами парсите.
Но всё же - что насчет штатных средств системы? (Добавление)
В регулярках можно использовать квантификаторы (или как они там называются) типа "либо есть, либо нет" для подмаски. Плюс есть возможность использовать именованные подмаски.
Попозже, если не забуду, накидаю примерчик.
----- Чем больше узнаю, тем больше я не знаю.
Specter
Отправлено: 10 Августа, 2014 - 17:32:53
Новичок
Покинул форум
Сообщений всего: 19
Дата рег-ции: Июль 2014
Помог: 0 раз(а)
DelphinPRO пишет:
Извиняюсь, невнимательно прочел. Вы и так регами парсите.
Но всё же - что насчет штатных средств системы?
Я использую Codeigniter.
Штатный роутинг имеет вид /controller/method/var/var и т.д.
Реализация роутинга идет чере /controller/method/.
Данная реализация меня не устраивает.
Пока остановился на таком костыле
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.