Как создать список выбора в формах сущностей с изменяемым списком ключевых значений?


Я хотел бы создать поле для моей Формы сущности , аналогичное "Списку выбора", с возможностью изменять его значения после отправки данных.

В настоящее время, когда я пытаюсь изменить значения по умолчанию для "Списка выбора", это приводит к ошибке:

Список разрешенных значений: некоторые значения удаляются во время текущего использования.

Или:

В базе данных есть данные для этого поля. Настройки поля не могут больше не будет изменено.

Я считаю, что это поведение должно отличаться от поведения для типа контента, как при использовании Entityform Меня не интересуют уже представленные данные (поскольку предполагается, что они должны быть представлены только один раз)?

Вопрос

Как создать виджеты списка выбора в Формах сущностей , где я могу изменить его ключевые значения после отправки данных?

Как мне исправить или обойти это ограничение Drupal, или я должен использовать другое решение/модуль вместо этого или написать свое собственное?


Пример сценария

Так, например, я хочу создать виджет списка выбора (например, поле contact_by), отображаемый в форме сущности , который имеет следующие значения:

by_phone|By Phone
by_email|By Email
ops_typo|By Post (fixme: correct typo)
by_fax|By Fax (fixme: remove me)

Таким образом, критическим сценарием будет настоятельная необходимость изменения этих значений, таких как опечатка (исправление ops_typo) или изменения бизнес-требований к тому, как работает эта форма (например, я хочу удалить by_fax, появляющиеся в формах отправки для новых формы), однако в настоящее время это невозможно с помощью стандартного виджета списка выбора, поскольку у него уже есть некоторые существующие данные, связанные с этим значением


Воспроизводимые шаги

  1. Запуск Песочница Drupal.
  2. Как администратор, добавьте новый тип формы сущности (Администратор/Структура/Типы формы сущности/Добавить) для пользователей аутентификации: Тест
  3. Добавьте новое обязательное поле Контакта По типу списка (текст) в качестве виджета "Выбрать список", вставляя значения выше.
  4. Создать две формы сущностей (Администратор/Структура/Типы форм сущностей/Ссылка отправки или по адресу /eform/отправить/проверить), одна с По почте, другая со значениями По факсу.
  5. Теперь перейдите к Управление полями этой Формы сущности , в разделе "редактировать поле" или "настройки поля" попробуйте удалить/изменить последние два значения (ключевая часть , а не метка).

Хранение данных

Согласно комментарию, изменение значения не повредит ни одному существующие данные (несмотря на предупреждение), потому что сохраненное значение в любом случае является базой данных в текстовом формате, например:

INSERT INTO `field_data_field_title` VALUES ('entityform','test_title',0,207,207,'und',0,'Foo');
INSERT INTO `field_revision_field_title` VALUES ('entityform','test_title',0,207,207,'und',0,'Foo');

, в котором есть ссылки на право entityform:

INSERT INTO `entityform` VALUES (208, 'test_title', '', 1447192797, 1447192797, X'733A303A22223B', 1, 0, NULL);

Поэтому при просмотре формы сущности (например, /entityform/208) просто отображается обычный текст. Мне не нужно редактировать эти данные, так как это всего лишь одноразовая отправка формы.

 5
Author: kenorb, 2015-11-10

1 answers

Что касается обходного пути, можно использовать Ссылку на термин таксономии тип поля как Список выбора , который предоставит мне динамический список параметров (список терминов), которые могут быть изменены в будущем.

Однако это не идеальное решение для нескольких форм с точки зрения UX, так как мне нужно создать отдельный словарь таксономии для каждого виджета (или создать очень длинный).

 6
Author: kenorb, 2015-11-14 13:49:46