В настоящее время я пытаюсь добавить переводимую текстовую область в панель описания, как описано здесь: >https://docs.akeneo.com/3.2/manipulate_pim_data/category/add_new_properties_to_a_category.html Моя текущая версия Akeneo — 3.2, из-за некоторых архитектурных ограничений я не могу сейчас обновиться до версии 4.
Я рабски следовал описанным выше шагам, но когда я запускаю pim-community-standard % php bin/console doctrine:schema:update --dump-sql --verbose
, я получаю эту ошибку:
In TreeListener.php line 72:
[Gedmo\Exception\UnexpectedValueException]
Tree object class: Akeneo\Pim\Enrichment\Component\Category\Model\Category must have tree metadata at this point
Это мои файлы на данный момент:
pim-community-standard/src/Acme/Bundle/CatalogBundle/Entity/CategoryTranslation.php
:
<?php
namespace Acme\Bundle\CatalogBundle\Entity;
use Akeneo\Pim\Enrichment\Component\Category\Model\CategoryTranslation as BaseCategoryTranslation;
class CategoryTranslation extends BaseCategoryTranslation
{
protected $description;
public function getDescription()
{
return $this->description;
}
public function setDescription($description)
{
$this->description = $description;
return $this;
}
}
pim-community-standard/src/Acme/Bundle/CatalogBundle/Entity/Category.php
:
<?php
namespace Acme\Bundle\CatalogBundle\Entity;
use Akeneo\Pim\Enrichment\Component\Category\Model\Category as BaseCategory;
class Category extends BaseCategory
{
public function getDescription()
{
$translated = ($this->getTranslation()) ? $this->getTranslation()->getDescription() : null;
return ($translated !== '' && $translated !== null) ? $translated : '['.$this->getCode().']';
}
public function setDescription($description)
{
$this->getTranslation()->setDescription($description);
return $this;
}
public function getTranslationFQCN()
{
return CategoryTranslation::class;
}
}
pim-community-standard/src/Acme/Bundle/CatalogBundle/Resources/config/entities.yml
:
parameters:
pim_catalog.entity.category.class: Acme\Bundle\CatalogBundle\Entity\Category
pim_catalog.entity.category_translation.class: Acme\Bundle\CatalogBundle\Entity\CategoryTranslation
pim-community-standard/src/Acme/Bundle/CatalogBundle/DependencyInjection/AcmeCatalogExtension.php
<?php
// https://stackoverflow.com/questions/45730301/error-on-override-akeneo-entity
// https://github.com/akeneo/pim-community-dev/issues/7509
namespace Acme\Bundle\CatalogBundle\DependencyInjection;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader;
use Symfony\Component\DependencyInjection\Extension\Extension;
class AcmeCatalogExtension extends Extension
{
public function load(array $configs, ContainerBuilder $container)
{
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('entities.yml');
}
}
Я добавил этот код внизу pim-community-standard/app/config/config.yml
akeneo_storage_utils:
mapping_overrides:
-
original: Akeneo\Pim\Enrichment\Component\Category\Model\Category
override: Acme\Bundle\CatalogBundle\Entity\Category
-
original: Akeneo\Pim\Enrichment\Component\Category\Model\CategoryTranslation
override: Acme\Bundle\CatalogBundle\Entity\CategoryTranslation
Плюс два файла .orm.yml. Вот моя полная файловая система:
На самом деле, мои новые классы расширяют те же классы, которые я переопределяю в config.yml
. Поэтому я не понимаю, почему я получаю какую-либо ошибку. Обратите внимание, что на самом деле я сделал много проб и ошибок, поэтому я не уверен, кэшируются ли каким-либо образом предыдущие версии расширений?