Вы получаете ошибку для 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) Проверьте свой магазин.
Надеюсь, это поможет вам!