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

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"]
}) }}

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


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