Проблема с LoginForm

Здравствуйте,

сегодня столкнулись с такой проблемой в 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)))));

	}



Возможно, кому-то будет полезно.

Честно говоря не было такой проблемы. По моему была проблема если выводить русский прямо в лейаут. Или вы все же используете public function attributeLabels() в модели?

Мы пользовали функцию CHtml::activeLabelEx($form,‘Имя Пользователя’)

в view:




CHtml::activeLabelEx($articles,'SectionId');

CHtml::activeLabelEx($articles,'Date');

CHtml::activeLabelEx($articles,'Title');



в моделе:




public function attributeLabels()

	{

		return array(

                'SectionId' => 'Рубрика',

                'Date' => 'Дата',

                'Title' => 'Заголовок статьи',

               );

	}



И все должно работать без исправлений!!!

Просто тогда функция которую вы правили даже не вызывается, а выводится точно так же как вы написали в attributeLabels.

То есть она вызывается, только для алиас поля который идет в латинице.

Может браузер дурак, или IDE

Скорее всего у Вас в базе данных стоит не верное сравнение. Например, utf8_swhedish_ci вместо utf8_general_ci. Это в случае с utf-8.

2Bat Batovich

сохраняйте файлы в кодировке UTF-8 и будет вам счастье.