Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Мой роутинг простой, это была одна из двух причин по выбору Laravel вместо Symfony -
Route::controller(Controller::detect());
Такой роутинг не понимает строки
/pages/by_tag/%D0%B3%D0%BE%D0%BB%D0%BE%D0%B2%D0%BE%D0%BB%D0%BE%D0%BC%D0%BA%D0%B0
Зато понимает
/pages/by_tag/blahblah
Порыскав в исходниках, подозреваю, что в вышеупомянутом случае они подставляют шаблон control/action/(:any?)/(:any?) и т.д., который резолвится в
(?:/([a-zA-Z0-9\.\-_%=]+)
Но он почему-то выкидывает меня на роутинг 404 (который :all) — что делать?
Изменено ZoRDoK (08.01.2013 18:08:01)
Не в сети
Не в сети
Решил проблему пока так, но мне не нравится этот вариант, это не DRY
Route::get('/pages/by_tag/(:all)', 'pages@by_tag');
Не в сети
}%С первого взгляда ничего в глаза не бросается. Попробуй в %%router.php%% в метод %%match()%% подставить %%(php)var_dump($pattern);%% и т.п. и посмотреть, что с чем сравнивается и почему не совпадает.
Я xdebug-ом только что туда глянул, в общём, там URL становится /pages/by_tag/русскийтекст вместо %D0%FE и прочих процентов. Возможно, я что-то неправильно делаю при генерации ссылки. Смотрю в исходную страницу, где нажимаю ссылку, там значится то, что я написал в первом постинге (в href параметр с %-нтами), при нажатии Google Chrome генерит запрос с русскоязычным текстом, который под приведённую регулярку уже не подходит. Что-то тут не так.
UPD
Смотрю заголовки, Хром отправляет всё верно. Значит и генерю всё верно, и проблема где-то в Laravel
Вот заголовок запроса
Request URL:http://***.local/pages/by_tag/%D0%B2%D0%B0%D1%80%D0%B5%D0%BD%D1%8C%D0%B5
Изменено ZoRDoK (08.01.2013 18:34:53)
Не в сети
Вот ведь лол. Поискал по англоязычному форуму, это ошибка в HTTPFoundation от Smarty
http://forums.laravel.io/viewtopic.php?pid=21332#p21332
Однако, они эту ошибку уже исправили, а Laravel содержит устаревшую реализацию. Печально.
Не в сети
Проблему решил таким образом (вдруг кому понадобится):
Скачал как zip вот отсюда последнюю версию HTTPFoundation Symfony
https://github.com/symfony/HttpFoundation
Распаковал в [project]/laravel/vendors/Components/HTTPFoundation-master
Переименовал старый в **-old а новый в имя без -master
Скопировал два файла из старого: LaravelRequest.php и LaravelResponse.php
Вуаля, url-кодированные запросы работают "из коробки" без костылей.
Не в сети
Не в сети
Не в сети
- А может критическая масса багрепортов накопится, и откажутся от HTTPFoundation
Судя по тому, в каком направлении всё движется, таких «Foundation» будет становится только больше и Laravel превратится в просто связующий код. Не могу сказать, хорошо это или плохо, но это однозначно не то, почему я начал его использовать в первую очередь. Искать ошибки в тонне разношёрстного кода — то ещё удовольствие.
Не в сети
Не в сети
У меня вот проблема с короткимы сслыками, может кто в курсе. Пишу поисковик на парсерах, всё работало и вот такая ситуация. Не читаются коды символа %(%25), он плюёт 400ю ошибку, так же space(%20) в начале строки но тут по страшнее, плюётся 403й страничкой. Мне бы процент исправить. Но в каком направлении копать вообще ума не приложу. А так же. Слешь читается а его код %2F выкидывает ошибку 404. Так же как и бэкслэшь.
Изменено Alex_PS (12.02.2013 18:47:32)
Не в сети
Не в сети
Пишу я скажем
И всё работает.
А вот если написать
либо %20,%5с то он тут же выдаст 400 ошибку, либо 403.
Проверял все символы, не работает именно процент.
Не в сети
Так сложно сказать. Выше уже писали о баге в Symfony, если не используешь последнюю версию (laravel\vendor\Symfony\Component\HttpFoundation) — попробуй замени, возможно ошибка уйдёт.
Если нет, возьми в руки отладчик и пройди от начала работы laravel/laravel.php. Удобно использовать XDebug или php_dbg.
Не в сети
Symfony я и сам поставил перед тем как постить на форум - не помогло. Спасибо, будем дебаггер юзать.
Не в сети
Страницы 1