Перейти к основному содержимому

Переопределение моделей / сущностей в Pimcore

Иногда необходимо переопределить определенные функции основных моделей Pimcore, поэтому можно Переопределите основные модели с помощью собственных классов.

В настоящее время это работает для всех реализаций следующих классов (но не для этих классов напрямую):

  • Pimcore\Model\Document
  • Pimcore\Model\Document\Listing
  • Pimcore\Model\AbstractObject
  • Pimcore\Model\DataObject\Listing
  • Pimcore\Model\Asset
  • Pimcore\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
{
...
}
}


Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.