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

Relations (Many-To-Many)

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

Редактируемый элемент Relations предоставляет возможность создания связей многие-ко-многим с другими элементами Pimcore. Это означает, что один элемент может быть связан с несколькими другими элементами, и наоборот. Например, один документ может ссылаться на множество ассетов, а один ассет может быть связан с несколькими документами.

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

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

Методы

ИмяВозвращаетОписание
getElements()arrayВозвращает массив назначенных элементов
current()intВозвращает текущий индекс при проходе по элементам
isEmpty()booleanВозвращает логическое значение, указывающее, пуст ли редактируемый элемент

Примеры

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

Для базового использования редактируемого элемента relations можно использовать следующий код:

<p>{{ "Types of elements" | trans }}:</p>  
{% if editmode %}
{{ pimcore_relations("objectPaths") }}
{% else %}
<ul>
{% for element in pimcore_relations("objectPaths") %}
<li>{{ element.getType() }}</li>
{% endfor %}
</ul>
{% endif %}

На рисунке ниже представлен предварительный просмотр режима редактирования:

Relations editable - editmode preview

Интерфейсная часть выглядит следующим образом:

Relations editable - frontend preview

Чтобы лучше понять, что именно представляет собой переменная $element, взгляните на вывод ниже:

array(6) {  
[0] => string(27) "Pimcore\Model\DataObject\Folder"
[1] => string(32) "Pimcore\Model\DataObject\BlogArticle"
[2] => string(32) "Pimcore\Model\DataObject\BlogArticle"
[3] => string(27) "Pimcore\Model\Document\Page"
[4] => string(27) "Pimcore\Model\Document\Page"
[5] => string(25) "Pimcore\Model\Asset\Image"
}

Пример с разрешенными типами и подтипами

Подобно редактируемому элементу Relation, в этом редактируемом элементе также можно указать разрешенные types, subtypes и classes. Например:

{{ pimcore_relations("objectPaths", {  
"types": ["asset","object"],
"subtypes": {
"asset": ["video","image"],
"object": ["object"]
},
"classes": ["person"]
}) }}

В этом случае пользователь не сможет добавлять другие элементы, кроме тех, которые указаны в конфигурации типов.


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