Перегрузка prestashop displayFieldName () для перевода полей

Я создал новый модуль с помощью MVC.

В моем классе ObjectModel я перегружаю функцию displayFieldName (), чтобы получать ошибки чтения полей человеком, когда пользователи плохо заполняют форму.

Например: «Поле даты начала является обязательным» вместо «Поле даты начала необходимо».

Я не могу найти, как перевести это поле в этой функции

/* Overload */
public static function displayFieldName($field, $class = __CLASS__, $htmlentities = true, Context $context = null)
{
    $fieldname = array(
        'date_start' => 'Start date',
        'title' => 'Title',
    );
    if ($fieldname[$field])
        return $fieldname[$field];
    else
        return $field;
}

Я много чего пробовал, но не могу найти здесь обычную функцию l (). Любая идея?


person Axi    schedule 14.02.2014    source источник


Ответы (1)


Вам вообще не нужно этого делать. Это уже реализовано в PrestaShop.

BackOffice> Локализация> Перевод> Перевод названий полей

Обратите внимание, что во время установки вы должны скопировать файл объектной модели в папку классов.

Итак, если у вас есть объектная модель MyDataObject, у вас должны быть:

classes / MyDataObject.php, в котором вы должны иметь

<?php

class MyDataObjectCore extends ObjectModel
{

}

Не забывайте суффикс «Core», потому что он нужен для функции трансляции полей.

person PrestaShopDeveloper    schedule 15.02.2014
comment
Спасибо, он работает после копирования класса, как вы сказали, и очистки файла cache / class_index.php. Я вижу, что отредактированные таким образом переводы попадают в /translations/lang/fields.php, как можно скопировать существующий перевод полей во время установки? - person Axi; 17.02.2014
comment
Вы можете открыть /translations/lang/fields.php и добавить после последнего назначения новый: $ _FIELDS ['Zone_b068931cc450442b63f5b3d276ea4297'] = 'name'; индекс массива - ClassName + подчеркивание + MD5 поля. $ key = $ class .'_ '. md5 ($ field); - person PrestaShopDeveloper; 17.02.2014