Два варианта вывода профиля.

#1 16 декабря 2014 в 09:44
В общем делаю мультиязычный сайт. В данный момент реализую возможность вывода профиля пользователя на разных языках.
Для этих целей в таблице cms_users_fields добавил два поля 'title_en' и 'fieldset_en'. Где хранится английская версия наименования поля и группы полей.
В файле темы controllers/users/profile_view.tpl.php нашёл вызов метода cmsForm::mapFieldsToFieldsets($fields, function($field, $user), класса cmsForm. Нашёл его описание в файле system/core/form.php и переписал метод

public static function mapFieldsToFieldsets($fields, $callback=null, $values=null){
//Загружаем текущий язык
$config = cmsConfig::getInstance();
$language = $config->language;


$fieldsets = array();

$current = null;

$index = 0;

$fieldsets[ $index ] = array(
'title' => $current,
'fields' => array()
);

$user = cmsUser::getInstance();

foreach($fields as $field){

if ($language == 'en') {
$field['title'] = $field['title_en'];
}


if (is_callable($callback)){
if (!$callback( $field, $user )) { continue; }
}

if (is_array($values)){
if (empty($values[ $field['name'] ])){ continue; }
}

//Англиская версия сайта
if ($language == 'en'){
if ($current != $field['fieldset_en']){

$current = $field['fieldset_en'];
$index += 1;

$fieldsets[ $index ] = array(
'title' => $current,
'fields' => array()
);

}
}


//Русская версия сайта
if ($language != 'en'){
if ($current != $field['fieldset']){

$current = $field['fieldset'];
$index += 1;

$fieldsets[ $index ] = array(
'title' => $current,
'fields' => array()
);

}
}


$fieldsets[ $index ]['fields'][] = $field;

}

return $fieldsets;


}

При нажатии на кнопку мой профиль всё выводится как надо, то есть при просмотре английской версии наименования полей выводятся на английском. Но при нажатии редактировать профиль, переводятся только наименования групп полей, а наименования полей не переводятся. Хотя используется тот же самый метод.

Подскажите в чём причина?
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.