Relations (Many-To-Many)
Общая информация
Редактируемый элемент Relations предоставляет возможность создания связей многие-ко-многим с другими элементами Pimcore. Это означает, что один элемент может быть связан с несколькими другими элементами, и наоборот. Например, один документ может ссылаться на множество ассетов, а один ассет может быть связан с несколькими документами.
Конфигурация
| Имя | Тип | Описание |
|---|---|---|
width | integer | Ширина виджета в пикселях (опционально) |
height | integer | Высота виджета в пикселях (опционально) |
title | string | Заголовок для виджета ввода |
uploadPath | string | Путь для размещения загружаемых ассетов (встраиваемых) |
disableInlineUpload | boolean | Отключает встроенную загрузку ассетов. Если установлено в true, функция встроенной загрузки будет отключена |
types | array | Допустимые типы (документ, ассет, объект), если пусто, то разрешены все типы |
subtypes | array | Допустимые подтипы, сгруппированные по типу (папка, страница, сниппет, изображение, видео, объект и т.д.), если пусто, то разрешены все подтипы (см. пример ниже) |
classes | array | Допустимые имена классов объектов, если пусто, то разрешены все классы |
class | string | CSS-класс, который добавляется к окружающему контейнеру этого элемента в режиме редактирования |
reload | boolean | Установите в 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 %}
На рисунке ниже представлен предварительный просмотр режима редактирования:

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

Чтобы лучше понять, что именно представляет собой переменная $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"]
}) }}
В этом случае пользователь не сможет добавлять другие элементы, кроме тех, которые указаны в конфигурации типов.
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.