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

Relation (Many-To-One)

Общая информация

Редактируемый элемент Relation предоставляет функциональность для создания ссылки на другой элемент в Pimcore (документ, ассет, объект). В режиме фронтенда этот элемент возвращает путь к связанному элементу.

Конфигурация

ИмяТипОписание
typesarrayДопустимые типы (документ, ассет, объект), если пусто, то разрешены все типы
subtypesarrayДопустимые подтипы, сгруппированные по типу (папка, страница, сниппет, изображение, видео, объект и т.д.), если пусто, то разрешены все подтипы (см. пример ниже)
classesarrayДопустимые имена классов объектов, если пусто, то разрешены все классы
reloadbooleanУстановите в true, чтобы перезагрузить страницу при каждом изменении
widthintШирина поля в пикселях
uploadPathstringЦелевой путь для встраиваемых загруженных ассетов
classstringCSS-класс, который добавляется к окружающему контейнеру этого элемента в режиме редактирования

Методы

ИмяВозвращаетОписание
getElement()ElementПолучить назначенный элемент.
getFullPath()stringПолучить полный путь назначенного элемента.
isEmpty()booleanУзнать, пуст ли редактируемый элемент.

Примеры

Основное использование

Вы можете создать строку кода, как показано ниже:

{{ pimcore_relation("myRelation") }}  

После этого вид в административной панели изменится, как на изображении:

Relation editable preview in the administration panel

Использование ограничений

Если вы хотите задать элементы, которые могут быть назначены редактируемому элементу 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 restriction

Пример загрузки

Еще один полезный случай использования редактируемого элемента 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 %}


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