bat
(Mgoncharenko)
September 6, 2009, 9:41am
1
Здравствуйте,
сегодня столкнулись с такой проблемой в Yii, когда попытались прикрутить к тестовому сайту кодировку UTF-8.
Сайт был сгенерирован автоматически (как демо).
При попытке русификации формы логина получили нижеследующий результат:
Решение проблемы оказалось в файле CModel.php, вот его исправленная версия:
public function generateAttributeLabel($name)
{
return mb_convert_case(trim(mb_strtolower(str_replace(array('-','_'),' ',preg_replace('/(?<![A-Z])[A-Z]/', ' \0', $name)), "utf-8")), MB_CASE_TITLE, "utf-8");
//return ucwords(trim(strtolower(str_replace(array('-','_'),' ',preg_replace('/(?<![A-Z])[A-Z]/', ' \0', $name)))));
}
Возможно, кому-то будет полезно.
mc.aser
(Asergiychuk)
September 8, 2009, 6:50am
2
Честно говоря не было такой проблемы. По моему была проблема если выводить русский прямо в лейаут. Или вы все же используете public function attributeLabels() в модели?
bat
(Mgoncharenko)
September 8, 2009, 7:30am
3
Мы пользовали функцию CHtml::activeLabelEx($form,‘Имя Пользователя’)
mc.aser
(Asergiychuk)
September 8, 2009, 8:44am
4
в view:
CHtml::activeLabelEx($articles,'SectionId');
CHtml::activeLabelEx($articles,'Date');
CHtml::activeLabelEx($articles,'Title');
в моделе:
public function attributeLabels()
{
return array(
'SectionId' => 'Рубрика',
'Date' => 'Дата',
'Title' => 'Заголовок статьи',
);
}
И все должно работать без исправлений!!!
Просто тогда функция которую вы правили даже не вызывается, а выводится точно так же как вы написали в attributeLabels.
То есть она вызывается, только для алиас поля который идет в латинице.
Zolter
(Zolter Od)
September 10, 2009, 3:30pm
5
Может браузер дурак, или IDE
Timlar
(Dmitriy Grechukha)
September 19, 2009, 7:40pm
6
Скорее всего у Вас в базе данных стоит не верное сравнение. Например, utf8_swhedish_ci вместо utf8_general_ci. Это в случае с utf-8.
romman
(Guamocolatokint)
September 23, 2009, 10:32am
7
2Bat Batovich
сохраняйте файлы в кодировке UTF-8 и будет вам счастье.