преобразовать текст поля в список (текст) drupal 7 - PullRequest
5 голосов
/ 18 октября 2011

У меня есть поле типа text, и я хочу преобразовать его в тип List (text) в Drupal 7. Я не могу просто изменить значение, так как оно не позволяет мне, есть ли простой способсделать это?

Ответы [ 2 ]

5 голосов
/ 12 сентября 2014

Я только что написал некоторый код, который должен обрабатывать это для вас в моем Вспомогательном модуле : http://cgit.drupalcode.org/helper/tree/lib/FieldChangeHelper.php?h=7.x-1.x

FieldChangeHelper::changeType('my_text_field_name', 'list_text');

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

5 голосов
/ 18 октября 2011

Легкого пути нет, нет. Насколько я могу судить, вам необходимо внести следующие изменения в БД:

  1. В field_config измените столбец type на «list_text», а столбец module на «список» для своего поля.

  2. Затем вам нужно изменить сериализованный массив в столбце data, чтобы он соответствовал списковому типу (он будет иметь настройки для текстовых типов на данный момент, очевидно). Здесь нет простого способа показать вам, как это сделать, лучше всего сравнить сериализованный массив с одним для другого поля типа списка, тогда вы сможете увидеть, какие значения нужно удалить / изменить. , Массив allowed_values в settings будет тем местом, где вы поместите значения вашего списка. Как только это будет изменено, повторно сериализуйте его и поместите обратно в столбец data для вашего поля.

  3. После этого удалите все столбцы из таблиц field_data и field_revision вашего поля, которые начинаются с field_myfield_, но не field_myfield_value (этот тип списка по-прежнему нуждается в этом столбце) .

  4. Добавить индекс к этим таблицам для столбца value.

  5. Очистить кеш

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

...