将字段文本转换为列表(文本)drupal 7

Chr*_*nch 5 drupal drupal-7

我有一个类型文本的字段,我想将它转换为Drupal 7中的类型列表(文本).我不能简单地更改值,因为它不会让我,有一个简单的方法来做到这一点?

Cli*_*ive 5

没有简单的方法,没有.据我所知,这些是您需要进行的手动数据库更改:

  1. field_config变化的type列"list_text"和module栏为您的字段"列表".

  2. 然后,您需要更改data列中的序列化数组以匹配列表类型(此时它将具有文本类型的设置).没有简单的方法向您展示如何在此处执行此操作,最好的方法是将序列化数组与列表类型的不同字段进行比较,然后您将能够看到需要删除/更改的值.下面的allowed_values数组settings将放置列表的值.一旦更改,重新序列化并将其放回到data您的字段的列中.

  3. 之后,从您的字段field_datafield_revision表中删除任何列,field_myfield_不是 field_myfield_value(列表类型仍然需要该列).

  4. value列的这些表添加索引.

  5. 清除你的缓存

我必须警告这是完全未经测试它只是似乎是有道理的看表结构,这将会是退居了三个表你会以防万一被打的是个好主意.


Dav*_*eid 5

我只是在Helper模块中编写了一些应该为您处理的代码:http : //cgit.drupalcode.org/helper/tree/lib/FieldChangeHelper.php? h = 7.x-1.x

FieldChangeHelper::changeType('my_text_field_name', 'list_text');
Run Code Online (Sandbox Code Playgroud)

对于大多数简单的案例和领域,它应该可以正常工作,但是应该进行彻底的测试。目前,它也不会更新任何字段格式化程序,因此您需要在运行该字段后查看该字段的显示配置。