![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
DEER |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 749 Регистрация: 12.4.2005 Где: г. Рязань Репутация: 2 Всего: 13 |
Добрый день.
Столкнулся с такой проблемой. Начну сначала. Изначально проект был на windows-1251 (и классы и шаблоны, и бд) все работало, но приходилось в каждом action контролеров явно указывать
то есть явно указывать, что content_type должен быть windows-1251. Это все работало, но именно это явное указание не понтравилось "заказчику". В связи с этим вопрос №1: Можно ли как то, где то указать, что content_type должен быть windows-1251? К конфиге каком нибудь? Все облазил - не нашел. Далее решил, что раз Catalyst работает с utf8, то пусть и проект будет на utf8 Изменил кодироку в БД у таблиц, изменил кодировку у классов проекта и шаблонов. В модели сделал такой конфиг
все. у меня все работает и отображается. Отослал проверить. Но у "заказчика" вылетает ошибка. Он ввел в поле русские символы и теперь
почитал на счет этой ошибки. Даже тут на форуме есть тема про это. Что получается? Я должен каждый парамерт из запросов и БД изменять
Не за что не поверю ![]() в сети нашел Catalyst::Plugin::Unicode, может он поможет? проблема в том, что у меня не воспроизводиться такая ошибка. -------------------- |
||||||||
|
|||||||||
gcc |
|
||||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 2 Всего: 17 |
я держу всегда везде в utf8
или
скорее всего begin Добавлено через 6 минут и 40 секунд а зачем вы его перевли на utf8? может быть стоит все таблицы перевести в utf8? |
||||
|
|||||
DEER |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 749 Регистрация: 12.4.2005 Где: г. Рязань Репутация: 2 Всего: 13 |
да в том и прикол, что все таблицы тоже в utf8 и шаблоны в utf8 и классы в utf8
первый вопрос сам разобрал. переопределил метод process и View и там поставил нужный content_type. Странно, что пол года назад это не получилось сделать... -------------------- |
|||
|
||||
DaemonSuw |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 11.3.2008 Репутация: нет Всего: 3 |
В перле бы хорошо врубить магическую переменную $ENV{PERL_UNICODE} где нибудь "в начале" (не знаю где начало в каталисте - не работал) в блоке BEGIN {} но 100% уверенности нету(
|
|||
|
||||
kapany3 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 4.11.2009 Репутация: нет Всего: нет |
Я решил данную проблему изменив подпрограмму в контроллере Root.pm
Т.е. достаточно указать эту строчку только один раз, а не впихивать в каждую подпрограмму. Кстати говоря, проблема возникла из-за невозможности поиска case insensitive в кодировке utf-8 в MySQL, хоть на конце кодировке в базе и красуется ci (т.е. case insensitive). Поиск ci в этой кодировке происходит только с буржуйским алфавитом. Так что подумай, прежде чем переходить на utf-8. |
||||
|
|||||
sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 2 Всего: 31 |
Кстати знатоки каталиста, напишите плиз в каком порядке выполняются действия контроллеров.
Помнится было какое - то действие, которое дергалось вперед всего в любом случае. Вот в нем то можно выставлять content-type |
|||
|
||||
kapany3 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 4.11.2009 Репутация: нет Всего: нет |
Я каталист юзаю недавно, и на сколько мне известно, то нет такого действия. При создании нового проекта у вас в контроллере Root есть две подпрограммы: index и end. index можно переназвать или удалить вовсе, и ничего страшного не произойдёт. А вот end - действие, которое выполняется в обязательном порядке самым последним, его удалять нельзя. В доках сказано, что даже если вы ничего не собираетесь делать в этой подпрограмме, то она всё равно должна быть, хоть и пустая. Т.е. первого действия нет обязательного, последнее есть в которое можно и вставить content-type и оно отработает как раз перед передачей параметров шаблону. |
|||
|
||||
sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 2 Всего: 31 |
Да это вообщем пофигу первое оно или последнее.
Главное что бы оно выпонлнялось при любом запросе. Т.е. Root::end() - вызывается в любом случае ? - тогда нужно переопределять его. |
|||
|
||||
DEER |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 749 Регистрация: 12.4.2005 Где: г. Рязань Репутация: 2 Всего: 13 |
а все описал в View
"заказчику" (www.reg.ru) подошел такой подход. То есть так можно делать получается -------------------- |
|||
|
||||
kapany3 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 4.11.2009 Репутация: нет Всего: нет |
у меня этот способ работает, я поправил
Судя по докам он отрабатывает при каждом запросе, когда все действия в контроллере выполнены (если этого метода нет в контроллере к которому произошёл запрос, то он ищется дальше, т.е. в родителе Root.pm). Кстати, как оказалось есть подобный метод, который отрабатывает в самом начале запроса, зовётся begin. Это по-моему более логичный вариант чем указывать кодировку в sub end : ActionClass('RenderView'). Буду его использовать. Спасибо за идею! ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl: CGI программирование" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |