Форум → Сообщество → Флейм → Routing
Routing
Страницы: ← Следующая страница →
-
15 июля 2011 г. 10:49, спустя 36 минут 22 секунды
она должна быть пиздатойСпустя 57 сек.а. и она должна распознавать роутыне всё полезно, что в swap полезло -
24 февраля 2013 г. 17:33, спустя 590 дней 6 часов 43 минуты
и передавать переменные строки запроса в контроллер
и собирать url из параметров обратно
больше от неё ничего не требуетсяне всё полезно, что в swap полезло -
15 июля 2011 г. 11:05, спустя 17 часов 31 минуту 25 секунд
master, не убавить не прибавить. отличная постановка. еще бы где-то фабьена присунуть для убедительностиιιlllιlllι унц-унц -
15 июля 2011 г. 11:20, спустя 14 минут 54 секунды
можно мастеру отображаемое имя сменить на fabien и будет самое оно! xD
master, не убавить не прибавить. отличная постановка. еще бы где-то фабьена присунуть для убедительностиСапожник без сапог -
15 июля 2011 г. 11:26, спустя 6 минут 39 секунд
жопа, как обычно, в нюансах
например обычно урл делится по сегментам слешем, сегменты представляют собой отдельные параметры. как передать в параметре урла значение, содержащее слеш?
например, есть роут
:brand/:model
как передать параметром значение model равное "MT T/A KM" ?
"site.com/BF+Goodrich/MT+T%2FA+KM" - если так, то в mod_rewrite есть замечательный баг, а именно:
мод-реврайт _сначала_ раскодирует символ %2F, получит урл "site.com/BF+Goodrich/MT+T/A+KM", и к полученному урлу НЕ применит реврайт-правило. т.е. попытается найти папку BF Goodrich, в ней MT T, в ней A KM, хотя он должен не искать папку, а перенаправить запрос на index.phpне всё полезно, что в swap полезло -
15 июля 2011 г. 11:34, спустя 7 минут 38 секунд
решение:
1. твой роутер на пэхапэ, а не мод реврайт должен разбирать параметры.
мод реврайт пускай просто перебрасывает на индекс БЕЗ параметров. индекс анализирует $_SERVER['REQUEST_URI'] вместо $_GET
2. правила роутинга должны быть сформулированы таким образом чтобы избежать неоднозначности. например
^brand/(.+)/model/(.+)$
здесь слова brand и model это буквально brand и model. ну ты понел )))ιιlllιlllι унц-унц -
15 июля 2011 г. 11:42, спустя 7 минут 46 секунд
твой роутер на пэхапэ, а не мод реврайт должен разбирать параметры.
так и есть, и ваще там суть не в том оказалась^brand/(.+)/model/(.+)$
я извиняюсь, но пихать имена параметров в урл - моветон, особенно учитывая влияние урл на seoне всё полезно, что в swap полезло -
15 июля 2011 г. 12:29, спустя 47 минут 26 секунд
Юзаю Django URL dispatcher, всё нравитсяhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
15 июля 2011 г. 12:39, спустя 10 минут 17 секунд
adw0rd, кто бы сомневался :DDD это уже из серии "спасибо, кеп" :DDDD -
15 июля 2011 г. 12:42, спустя 2 минуты 54 секунды
решение:
1. твой роутер на пэхапэ, а не мод реврайт должен разбирать параметры.
мод реврайт пускай просто перебрасывает на индекс БЕЗ параметров. индекс анализирует $_SERVER['REQUEST_URI'] вместо $_GET
а если на сайте лям траффика - разруливать его index.php должен, а? как частный случай скажем -
15 июля 2011 г. 13:05, спустя 23 минуты 4 секунды
вопрос не в том кто что юзает и нравится ему это или нет. А в том, что должен уметь роутинг.
Итак, как Мастер уже сказал, главные задачи роутера:
1) на основании пришедшего запроса найти соответствие контроллеру и передать в него необходимые параметры
2) предоставить возможность на основании контроллера и параметров сгенерировать ссылку (reverse)
оок.
Идем глубже.
По каким критериям нужно находить соответствия?
1.1) совпадение uri по шаблону
1.2) совпадение метода(ов): GET|PUT
1.3) совпадение домена, в том числе тоже по шаблону
Должен присутствовать механизм загрузки роутов (loaders), по возможности из разных форматов (phpArray, xml, yml, annotations). Но при этом стоит учесть, что все роуты подгрузить не удастся (например их 100500 и они в базе данных), поэтому matcher должен уметь например залезть в базу. Кроме того следует реализовать чайнинг, именно на уровне loaders:route-name-2
suffix: .html
hostname: {username}.%base_site_hostname%
import: file/with/subroutes.yml
то есть мы подгружаем роуты из файла и к каждому из них добавляем правило на совпадение названия хоста + суффикс.
Некоторые параметры могут быть необязательными:
news/
news/2 - страница 2
news/page2 - тоже страница 2
при разборе URL'а это относительно просто учесть. При генерации же сложнее. Роутинг Symfony2, напимер, съест слеш на конце, что как бы неправильно
Вероятнее всего роуты должны компилироваться в нативный пхп для увеличения быстродействия. Также хорошо бы выделять группы роутов, для оптимизации:// example of compiled routing
if ('/blog' === substr($requestContext['path'], 0, 5)) {
// пошла группа правил
} -
15 июля 2011 г. 13:52, спустя 46 минут 30 секунд
стопудово
решение:
1. твой роутер на пэхапэ, а не мод реврайт должен разбирать параметры.
мод реврайт пускай просто перебрасывает на индекс БЕЗ параметров. индекс анализирует $_SERVER['REQUEST_URI'] вместо $_GET
а если на сайте лям траффика - разруливать его index.php должен, а? как частный случай скажемСапожник без сапог -
15 июля 2011 г. 13:55, спустя 2 минуты 59 секунд
^brand/(.+)/model/(.+)$
я извиняюсь, но пихать имена параметров в урл - моветон, особенно учитывая влияние урл на seo
как скажешь ))) мне пох и гуглю тожеιιlllιlllι унц-унц -
15 июля 2011 г. 16:52, спустя 2 часа 57 минут 15 секунд
вопрос не в том кто что юзает и нравится ему это или нет. А в том, что должен уметь роутинг.
Я о том, что роутинг должен уметь то, что умеет джанговский URL диспетчер (как по мне). Поэтому я его и использую, и всячески рекомендую.
Лучшего решения (гибкость и простота) я пока не видел…
Кеп/не кеп оставьте для школотыhttps://smappi.org/ - платформа по созданию API на все случаи жизни
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!