Работа с объектами ORM

Вывести перевод для текущего языка элемента определённого поля можно так (если перевода нет, то вернет значения дефолтного языка)

$oInformationsystem_Item = Core_Entity::factory('Informationsystem_Item', 123);
echo $oInformationsystem_Item->multiLng('name'); // About

// для доп. свойства
$oProperty = Core_Entity::factory('Property', 123);
$aPropertyValues = $oProperty->getValues($shop_item_id);  
echo $aPropertyValues[0]->multiLng('value')

Получить все переводы всех полей для элемента в виде объектов

/* 
 * Получение маасива объектов, $bCache = TRUE
 * @param string $entity model name
 * @param int $entity_id
 * @param boolean $type FALSE|TRUE
 * @param boolean $bCache cache mode
 * @return array
 */
Core_Entity::factory('MultiLanguage_Field')->getAFields('shop_item', 123);

// Результат
//Array (
//	[0] => MultiLanguage_Field_Model Object
//	[1] => MultiLanguage_Field_Model Object
//)

/* 
 * Получение массива объектов с ключами полей
 */
Core_Entity::factory('MultiLanguage_Field')->getAFields('shop_item', 123, TRUE);

// Результат
//Array (
//	[name] => MultiLanguage_Field_Model Object
//	[description] => MultiLanguage_Field_Model Object
//)

/* 
 * Получение объекта по полю
 * @param string $entity model name
 * @param int $entity_id
 * @param string $field field name
 * @param boolean $bCache cache mode
 * @return self|NULL
 */
Core_Entity::factory('MultiLanguage_Field')->getByField('shop_item', 123, 'name');

Сохранение перевода для элемента

Сохранение происходит через параметр datalng_{lng}_{field}, где {lng} это код языка, а {field} имя поля элемента

$oInformationsystem_Item = Core_Entity::factory('Informationsystem_Item', 123);
$oInformationsystem_Item->datalng_en_name = 'My name';
$oInformationsystem_Item->save();
// получаем текущий язык


// получение 

Вывести домен текущего языка, для типа [site]

$oMultiLanguage = Core_Entity::factory('MultiLanguage')->getByLng(Core::getLng());
    
if(!is_null($oMultiLanguage)
    echo $oMultiRegion->Site_Alias->name; // msk.site.ru

Вывести путь текущего языка, для типа [url]

<?php
$lngPath = '';

$oMultiLanguage = Core_Entity::factory('MultiLanguage')->getByLng(Core::getLng());
!is_null($oMultiLanguage) && $lngPath = $oMultiLanguage->getPath();

?>

<a href="/<?php echo $lngPath ?>politics/">Политика конфиденциальности

Last updated