Làm cách nào để lập trình cập nhật các giá trị được phép của trường danh sách?


10

Tôi đã tạo một danh sách chọn cho tài khoản Profile2 trong Drupal 7. Trong danh sách giá trị được phép, tôi đã thêm một số giá trị. Bây giờ những gì tôi muốn làm là lập trình cập nhật các giá trị trong danh sách đó (thêm, xóa hoặc cập nhật). Tôi không muốn sử dụng form_alter vì tôi muốn các cập nhật này được cam kết với cơ sở dữ liệu. Vấn đề của tôi là dường như tôi không thể tìm thấy nơi các giá trị này được lưu trữ trong cơ sở dữ liệu hoặc cách lấy các giá trị đó từ Profile2, cập nhật chúng và sau đó lưu chúng.

Tôi đã giải quyết vấn đề cao và thấp về vấn đề đặc biệt này và không thể tìm thấy câu trả lời về cách thực hiện việc này. Tôi hy vọng ai đó có thể giúp tôi ra.

Cảm ơn.

Câu trả lời:


23

Một cái gì đó dọc theo dòng ...

// Get the field info
$info = field_info_field('field_some_field');

// Get a reference to the values
$values = &$info['settings']['allowed_values'];

// Manipulate the values in some way, e.g.
$values['new_value'] = 'New Value';

// Save the field
field_update_field($info);

Tôi cần thêm đoạn mã này vào đâu?
Shivam

@shivam Bạn cần thêm mã này vào một mô-đun tùy chỉnh mà bạn tạo.
dùng5013

Đặt cái này trong hook_update_N để chạy chỉ một lần.
Achraf JEDAY

Ngoài ra, điều này sẽ không thay đổi các giá trị được phép cũ nếu trường đã được sử dụng.
Achraf JEDAY

3

Bạn nên sử dụng allowed_values_functionvới một cuộc gọi lại:

'settings' => array(
  'allowed_values' => array(),
  'allowed_values_function' => '_my_feature_module_options_list',
),

Xem phần Tạo tùy chọn giá trị động cho trường thực thể .


Một câu trả lời đầy đủ hơn sẽ hữu ích. Mã bạn tham khảo là tốt và hoạt động tương tự như câu trả lời được chấp nhận, nhưng được tạo để sử dụng với mô-đun Tính năng.
Johnathan Elmore
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.