Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Общий раздел » Валидация русских символов » 13.01.2013 14:36:27

ZoRDoK
Ответов: 1

В классе валидации alpha и другие подобные типы валидируют только латинский алфавит. Править исходники движка не хочется, есть ли какой-нибудь бандл для этого?

#2 Re: Laravel 3 » Не ест URL-кодированные символы » 08.01.2013 18:59:42

Проблему решил таким образом (вдруг кому понадобится):

Скачал как zip вот отсюда последнюю версию HTTPFoundation Symfony
https://github.com/symfony/HttpFoundation

Распаковал в [project]/laravel/vendors/Components/HTTPFoundation-master
Переименовал старый в **-old а новый в имя без -master
Скопировал два файла из старого: LaravelRequest.php и LaravelResponse.php

Вуаля, url-кодированные запросы работают "из коробки" без костылей.

#3 Re: Laravel 3 » Не ест URL-кодированные символы » 08.01.2013 18:40:11

Вот ведь лол. Поискал по англоязычному форуму, это ошибка в HTTPFoundation от Smarty
http://forums.laravel.io/viewtopic.php?pid=21332#p21332

Однако, они эту ошибку уже исправили, а Laravel содержит устаревшую реализацию. Печально.

#4 Re: Laravel 3 » Не ест URL-кодированные символы » 08.01.2013 18:26:23

Proger_XP пишет:

}%С первого взгляда ничего в глаза не бросается. Попробуй в %%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

#5 Re: Laravel 3 » Не ест URL-кодированные символы » 08.01.2013 18:23:46

Решил проблему пока так, но мне не нравится этот вариант, это не DRY

Route::get('/pages/by_tag/(:all)', 'pages@by_tag');

#6 Laravel 3 » Не ест URL-кодированные символы » 08.01.2013 18:07:39

ZoRDoK
Ответов: 14

Мой роутинг простой, это была одна из двух причин по выбору 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) — что делать?

Подвал раздела