Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”

0 Пользователей и 2 Гостей просматривают эту тему.

*

goodprofy

  • *
  • 29
  • +1/-0
    • Просмотр профиля
Здравствуйте!
И снова я с дурными задачами)

На этот раз надо удалить поле типа "выпадающий список" из всех дочек родителя "Объект каталога".
Поле Называется Бренд, с ИД brend.

Существует ли какое либо решение?

*

ilyar

Поля создаются, присоединяются к группам, группы создаются для типов данных, одно и тоже поле может использоваться в разных типах данных .

Для того что бы получит поле по строковому идентификатору (то что ты называешь "ИД brend") не предусмотрено методов (поправьте меня если я не прав) для этого надо использовать вспомогательные конструкции типа:

Код: PHP [Выделить]

<?php
/**
* Get numeric identifier field from its string identifier
*
* @param umiFieldsGroup $group
* @param $fieldName
* @return int|null
*/
function getFieldIdByName(umiFieldsGroup $group, $fieldName) {
  $fields = $group->getFields();
  foreach($fields as $field) { /** @var $field umiField */
    if($field->getName() == $fieldName) {
      return $field->getId();
    }
  }
}


Для решения твоей задачи надо пройтись рекурсивно по типам вниз от Объект каталога, произвести с каждым типом следующие:

- получить группу полей $fieldsGroup = getFieldsGroupByName($field_group_name[, $allow_disabled = false])
- вывести поле из группы полей $fieldsGroup->detachField($fieldId)

Еще как вариант решения твоей задачи используя коллекцию umiFieldsCollection, можно физически удалить поле, в этом случае оно удалится во всех типах данных.

Код: PHP [Выделить]

<?php
  $fieldId = 444;
  umiFieldsCollection::getInstance()->delField($fieldId);
« Последнее редактирование: 11 Марта 2014, 20:54:47 от ilyar »

*

ilyar

К стати именно для этих таких "дурных" задач был создан UMI.Console проект не получил заинтересованности у аудитории и разработчиков юми, и поэтому используется и развивается только автором. Кратко о проекте UMI.Console позволяет создавать простые скрипты на UMI.API, которые можно переиспользовать в разных проектах, запускается через php-cli это позволяет быстро работать с большим количеством объектов.  Демо - просмотр типов данных, документация по командам.
« Последнее редактирование: 11 Марта 2014, 20:56:52 от ilyar »

*

goodprofy

  • *
  • 29
  • +1/-0
    • Просмотр профиля
Спасибо. Моя ошибка была в том что я пытался найти поле по СИД(строковому ИД). И спасибо за консоль, пригодится =)