2011-10-18 34 views

Trả lời

5

Không có cách nào dễ dàng, không. Theo như tôi có thể nói đó là những DB thủ công thay đổi bạn sẽ cần phải thực hiện:

  1. Trong field_config thay đổi các type cột để 'LIST_TEXT' và module cột để 'danh sách' cho lĩnh vực của bạn.

  2. Sau đó, bạn sẽ cần phải thay đổi mảng được tuần tự hóa trong cột data để phù hợp với loại danh sách (nó sẽ có cài đặt cho loại văn bản tại thời điểm này). Không có cách nào dễ dàng để chỉ cho bạn cách thực hiện ở đây, cách tốt nhất là so sánh mảng được tuần tự hóa với một trường cho một loại danh sách khác, sau đó bạn sẽ có thể xem những giá trị nào bạn cần xóa/thay đổi . Mảng allowed_values dưới settings sẽ là nơi bạn đặt các giá trị của danh sách. Sau khi thay đổi, hãy nối lại và đặt lại cột data cho trường của bạn.

  3. Sau đó loại bỏ bất kỳ cột từ của lĩnh vực của bạn field_datafield_revision bảng bắt đầu với field_myfield_ nhưng khôngfield_myfield_value (kiểu danh sách vẫn cần cột đó).

  4. Thêm chỉ mục vào các bảng đó cho cột value.

  5. xóa bộ nhớ cache của bạn

Tôi phải cảnh báo đó là hoàn toàn chưa được kiểm tra nó chỉ dường như có ý nghĩa nhìn vào cấu trúc bảng, nó sẽ là một ý tưởng tốt để có một sao lưu của ba bảng bạn sẽ được chơi với chỉ trong trường hợp.

+0

Làm việc như một sự quyến rũ! Cảm ơn bạn –

+1

Tôi cũng phải thay đổi loại tiện ích con, bạn có thể thực hiện bằng cách chỉnh sửa dữ liệu trực tiếp trong 'field_config_instance' hoặc chỉnh sửa trường và chọn" Chọn "hoặc" Hộp kiểm "làm loại tiện ích con. Cũng như một mẹo, tôi thấy dễ nhất để chọn trường đầu tiên và sử dụng dữ liệu được tuần tự hóa đó để chỉnh sửa cột hiện có. Về cơ bản, bạn chỉ cần thay đổi tên (và độ dài ký tự cho các mục nhập đó) và ID. – Wayne

4

tôi chỉ viết một số mã mà nên xử lý này cho bạn trong Helper module tôi: http://cgit.drupalcode.org/helper/tree/lib/FieldChangeHelper.php?h=7.x-1.x

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

Nó sẽ làm việc tốt đối với trường hợp đơn giản nhất và các lĩnh vực, nhưng phải được kiểm tra kỹ lưỡng. Nó cũng hiện không cập nhật bất kỳ trình định dạng trường nào, vì vậy bạn sẽ muốn xem lại cấu hình hiển thị cho trường sau khi chạy nó.

+0

Cảm ơn người đàn ông - đã làm việc rất nhiều và tiết kiệm rất nhiều thời gian :) –

Các vấn đề liên quan