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

Добавление типов документов

Определение кастомных (пользовательских) типов документов в Pimcore осуществляется через конфигурацию путем статического сопоставления типа документа с именем PHP-класса.

До версии 10.6 единственным способом создания своих типов документов было их размещение в специальном пространстве имен Pimcore\Model\Document. Этот метод все еще работает, однако теперь документ может находиться в любом пространстве имен, если он правильно зарегистрирован.

Чтобы зарегистрировать новый тип документа, необходимо выполнить два шага:

1) Создайте класс документа

Класс документа должен наследоваться от Pimcore\Model\Document. Пространство имен может быть любым, но согласно правилам хорошего тона рекомендуется размещать документы в подпространстве Model\Document.

<?php  
// src/Model/Document/Book.php

namespace App\Model\Document;

class Book extends \Pimcore\Model\Document
{
// Обязательно переопределите свойство type
protected string $type = 'book';
}

2) Зарегистрируйте документ в карте типов (Document Type Map)

Далее нам нужно обновить конфигурацию pimcore.documents.type_definitions.map, чтобы включить в нее наш документ. Это можно сделать в любом загруженном конфигурационном файле (например, /config/config.yaml), но если вы предоставляете редактируемый файл с бандлом, вы должны определить его в конфигурационном файле, который загружается автоматически. Пример:

# /config/config.yaml  

pimcore:
documents:
type_definitions:
map:
book:
class: \App\Model\Document\Book

Не используйте это для переопределения классов

Секция type_definitions должна использоваться только для добавления новых типов документов. Если ваша задача — переопределить существующий системный класс Pimcore, используйте вместо этого механизм pimcore:models:class_overrides. Более подробную информацию об этом можно найти в разделе документации Переопределение моделей.


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