Prestashop 1,7 $ это-> переводчик-> транс в переопределении клиентского формата - PullRequest
0 голосов
/ 03 октября 2018

Я переопределяю функцию getFormat () в классе customerformatter.Здесь $ this-> translationator-> trans не работает.

Так, каков наилучший способ вызвать перевод полей типа

$format['company'] = (new FormField)
->setName('company')
->setType('text')
->setLabel($this->translator->trans(
'Company', [], 'Shop.Forms.Labels'
));

Если я перезаписываю весь класс customerformatter, очевидно, все работает.Спасибо

1 Ответ

0 голосов
/ 04 октября 2018

Вы получаете ошибку для translator и language, потому что в основном базовом классе CustomerFormatterCore;свойства типа translator и language имеют видимость private, поэтому доступ к дочернему классу, который в нашем случае переопределяет класс CustomerFormatter, невозможен.

Нам нужно снова объявить эти свойства как private и добавить их в метод __construct().

Выполните следующие шаги, чтобы достичь того, что вы хотите.

1) Создайте файл CustomerFormatter.php в папке override\classes\form и добавьте в него код ниже.

<?php
/**
 * @Override CustomerFormatter
 */

use Symfony\Component\Translation\TranslatorInterface;

class CustomerFormatter extends CustomerFormatterCore
{
    private $translator;
    private $language;

    public function __construct(
        TranslatorInterface $translator,
        Language $language
    ) {
        parent::__construct($translator, $language);
        $this->translator = $translator;
        $this->language = $language;
    }

    public function getFormat()
    {
        $format = parent::getFormat();

        if (Configuration::get('PS_B2B_ENABLE')) {
            $format['company'] = (new FormField)
                ->setName('company')
                ->setType('text')
                ->setLabel($this->translator->trans(
                    'Company', [], 'Shop.Forms.Labels'
                ));
        }
        // add formatter here as per your need            

        return $format;
    }
}

2) Удалите файл class_index.php из папки var\cache\prod и var\cache\dev.

3) Проверьте свой магазин.

Надеюсь, это поможет вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...