Ничего не найдено
Быстрый старт
CSS
Компоненты
Меню
Динамическое содержимое
SEO-паук
Социальные теги
Прочее
Установка
Категории v3
Категории v3: типы свойств

Работа с множественными свойствами

Изменение/редактирование/удаление множественных свойств немного отличается от обычных операций. Допустим у нас множественное поле типа «Файл» у категории news_item, с кодом gallery.

Полная замена (или установка новых)

Нам нужно создать массив, элементы которого будут моделями NewsItemGallery

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$model = \Eva\GeneratedModels\NewsItemBlender::create()
    ->getModelById(1);
    
$model->setGallery([
    \Eva\GeneratedModels\NewsItemGallery::createBlank()
        ->setValue("/eva2/site_templates/evasite/img/logo-x2.png"),
    \Eva\GeneratedModels\NewsItemGallery::createBlank()
        ->setValue("/eva2/site_templates/evasite/img/logo-x2.png")
]);
$model->update();
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Для полного удаления галереи - отправьте пустой массив.

1
2
3
4
5
6
7
8
<?php
$model = \Eva\GeneratedModels\NewsItemBlender::create()
    ->getModelById(1);
    
$model->setGallery([]);
$model->update();
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Частичное редактирование или удаление

Для удаления — получите список элементов и удалите не нужный. Обратите внимание, что в этом случае нам не нужно на основной модели вызывать метод update. В примере ниже мы удаляем первый элемент галереи.

1
2
3
4
5
6
7
8
9
10
11
<?php
$model = \Eva\GeneratedModels\NewsItemBlender::create()
    ->getModelById(1);
foreach($model->getGallery() as $ind=>$img) {
    if(empty($ind)) {
        $img->delete();
        break;
    }
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Для редактирования одного из элементов (в примере мы заменяем первую картинку):

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$model = \Eva\GeneratedModels\NewsItemBlender::create()
    ->getModelById(1);
foreach($model->getGallery() as $ind=>$img) {
    if(empty($ind)) {
        $img->setValue("/eva2/site_templates/evasite/img/logo-x2.png")
            ->update();
        break;
    }
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Добавление элемента в массив

Добавление элемента осуществляется вызовом метода pushValue и отличается тем, что мы должны вызвать метод update на главной модели.

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$model = \Eva\GeneratedModels\NewsItemBlender::create()
    ->getModelById(1);
$model->getGallery()
    ->pushValue(
        \Eva\GeneratedModels\NewsItemGallery::createBlank()
            ->setValue("/eva2/site_templates/evasite/img/logo-x2.png")
    );
$model->update();
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX