Переопределение моделей / сущностей в Pimcore
Иногда необходимо переопределить определенные функции основных моделей Pimcore, поэтому можно Переопределите основные модели с помощью собственных классов.
В настоящее время это работает для всех реализаций следующих классов (но не для этих классов напрямую):
Pimcore\Model\DocumentPimcore\Model\Document\ListingPimcore\Model\AbstractObjectPimcore\Model\DataObject\ListingPimcore\Model\AssetPimcore\Model\Asset\Listing
Так, например, переопределение класса листинга пользовательского определения класса, например, {c6} или
Pimcore\Model\Asset\Image поддерживается.
Но вы не можете переопределить {c8} (или другие классы абстрактных моделей), если сам (как это родительский класс, например, {c9}, и это будет означать, чтобы изменить иерархию класса).
Настройте переопределение
Конфигурация - это простая карта ключей / значения в вашем config/config.yaml, используя ключ
pimcore.models.class_overrides, например:
pimcore:
models:
class_overrides:
'Pimcore\Model\DataObject\News': 'App\Model\DataObject\News'
'Pimcore\Model\DataObject\News\Listing': 'App\Model\DataObject\News\Listing'
It is crucial that your override class extends the origin class, if not you'll break the entire system.
Don't forget to clear all caches (Symfony + Data Cache) after you have configured a class override
./bin/console cache:clear --no-warmup && ./bin/console pimcore:cache:clear
Example
In your config/config.yaml:
pimcore:
models:
class_overrides:
'Pimcore\Model\DataObject\News': 'App\Model\DataObject\News'
Your App\Model\DataObject\News:
<?php
namespace App\Model\DataObject;
class News extends \Pimcore\Model\DataObject\News
{
// start overriding stuff
public function getMyCustomAttribute(): mixed
{
...
}
}
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.