Relation (Many-To-One)
Общая информация
Редактируемый элемент Relation предоставляет функциональность для создания ссылки на другой элемент в Pimcore (документ, ассет, объект). В режиме фронтенда этот элемент возвращает путь к связанному элементу.
Конфигурация
| Имя | Тип | Описание |
|---|---|---|
types | array | Допустимые типы (документ, ассет, объект), если пусто, то разрешены все типы |
subtypes | array | Допустимые подтипы, сгруппированные по типу (папка, страница, сниппет, изображение, видео, объект и т.д.), если пусто, то разрешены все подтипы (см. пример ниже) |
classes | array | Допустимые имена классов объектов, если пусто, то разрешены все классы |
reload | boolean | Установите в true, чтобы перезагрузить страницу при каждом изменении |
width | int | Ширина поля в пикселях |
uploadPath | string | Целевой путь для встраиваемых загруженных ассетов |
class | string | CSS-класс, который добавляется к окружающему контейнеру этого элемента в режиме редактирования |
Методы
| Имя | Возвращает | Описание |
|---|---|---|
getElement() | Element | Получить назначенный элемент. |
getFullPath() | string | Получить полный путь назначенного элемента. |
isEmpty() | boolean | Узнать, пуст ли редактируемый элемент. |
Примеры
Основное использование
Вы можете создать строку кода, как показано ниже:
{{ pimcore_relation("myRelation") }}
После этого вид в административной панели изменится, как на изображении:
Использование ограничений
Если вы хотите задать элементы, которые могут быть назначены редактируемому элементу Relation, используйте параметры types, subtypes и classes в конфигурации редактируемого элемента.
Пример
{{ pimcore_relation("myRelation", {
"types": ["asset","object"],
"subtypes": {
"asset": ["video", "image"],
"object": ["object"],
},
"classes": ["person"]
}) }}
Мы ограничили редактируемый элемент myRelation следующими сущностями:
- Видео / Изображение (Ассеты)
- Объекты Person (
\Pimcore\Model\DataObject\Person) (Объекты)
Как видно на изображении ниже, невозможно добавить любой другой тип к этому редактируемому элементу.

Пример загрузки
Еще один полезный случай использования редактируемого элемента Relation — это ссылка на загрузку.
{% if editmode %}
{{ pimcore_relation("myRelation") }}
{% else %}
{% if pimcore_relation("myRelation").getElement() is instanceof('\\Pimcore\\Model\\Asset') %}
<a href="{{ pimcore_relation("myRelation").getFullPath() }}">{{ "Download" | trans }}</a>
{% endif %}
{% endif %}
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.