Как переопределить вывод ошибок? Или ещё лучше создать правило на изменение окончания.
Не приятно читать имя не должен быть пустым., тема не должен быть пустым.
Как переопределить вывод ошибок? Или ещё лучше создать правило на изменение окончания.
Не приятно читать имя не должен быть пустым., тема не должен быть пустым.
дак это самое,
array('name, topic', 'required', 'message' => 'Это обязательное поле')
?
ну или для каждого отдельно
array('name', 'required', 'message' => 'Заполните имя'),
array('topic', 'required', 'message' => 'Заполните тему')
Да, звучит неприятно, но с этими особенностями русского языка ничего не поделаешь. Придется писать тексты ошибок вручную. См. параметр message для валидатора (и другие, напр. tooLongдля CStringValidator). И если говорить откровенно, то выражение “не должен быть пустым” немного режет слух обычному пользователю, которому понятнее будет прочитать “необходимо заполнить поле …”
andy_s
Уже сделал В языковом файле сделал что бы оформлялось так:
{attribute} не долж[на|но|ен] быть пустым.
А потом анализ окончания и уже подбор нужной части)
Вот так:
'{attribute} не долж[на|но|ен] быть пуст[ой|ым|ым].'
Кому надо:
В классе CValidator, метод addError заменить на:
protected function addError($object,$attribute,$message,$params=array())
{
$type = 0;
$sValue = $object->getAttributeLabel($attribute);
if ( preg_match_all( '#\[(.+?)\]#si', $message, $aMatchh, PREG_SET_ORDER ) )
{
foreach( $aMatchh as $aMatch )
{
$aMatch[1] = explode( '|', $aMatch[1] );
if ( 3 == sizeof( $aMatch[1] ) )
{
if ( !$type )
{
$sEnd = mb_substr( $sValue, -2, 2, 'utf-8');
if ( $sEnd{0}.$sEnd{1}.$sEnd{2}.$sEnd{3} == 'РёСЏ' or $sEnd{2}.$sEnd{3}=='Р°' or $sEnd{2}.$sEnd{3}=='СЊ' )
$type = 1;
elseif ( $sEnd{2}.$sEnd{3} == 'СЏ' or $sEnd{2}.$sEnd{3} == 'Рµ' )
$type = 2;
else
$type = 3;
}
if ( 1 == $type )
$sEnd = $aMatch[1][0];
if ( 2 == $type )
$sEnd = $aMatch[1][1];
if ( 3 == $type )
$sEnd = $aMatch[1][2];
$params[$aMatch[0]] = $sEnd;
}
}
}
$params['{attribute}'] = $sValue;
$object->addError($attribute,strtr($message,$params));
}
Способ не идеальный, но работает
andy_s
Хороший вариант. К релизу поменяю на него сообщения.
А когда примерно релиз?
ncs
Пока неизвестно.
samdark
Было бы хорошо если бы в Gii всунули обработку типа enum, а то приходится каждый раз самому добавлять CRangeValidator
Lion__
Надо добавить это в тикет: http://code.google.com/p/yii/issues/entry
При этом привести SQL таблицы с enum и код, который должен получиться.
Если туда напишу - у команды разработчиков месяца два уйдёт на перевод) Я инглиш плохо шарю)
Если не выходит на английском, пишите не русском. Я пойму и переведу