วิธีอัปเดตค่าที่อนุญาตของฟิลด์รายการโดยทางโปรแกรม


10

ฉันได้สร้างรายการเลือกสำหรับบัญชี Profile2 ใน Drupal 7 ในรายการค่าที่อนุญาตฉันได้เพิ่มค่าบางอย่าง ตอนนี้สิ่งที่ฉันต้องการจะทำคือการปรับปรุงค่าในรายการโดยทางโปรแกรม (เพิ่มลบหรือปรับปรุง) ฉันไม่ต้องการใช้ form_alter เพราะฉันต้องการอัพเดตเหล่านี้ที่ส่งไปยังฐานข้อมูล ปัญหาของฉันคือฉันไม่สามารถหาที่เก็บค่าเหล่านี้ในฐานข้อมูลหรือวิธีดึงค่าเหล่านั้นจาก Profile2 อัปเดตแล้วบันทึก

ฉันได้ Googled สูงและต่ำในเรื่องนี้โดยเฉพาะและไม่สามารถหาคำตอบเกี่ยวกับวิธีการทำเช่นนี้ได้ ฉันหวังว่าจะมีคนช่วยฉันออก

ขอบคุณ

คำตอบ:


23

บางสิ่งบางอย่างตามแนวของ ...

// 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);

ฉันต้องเพิ่มรหัสชิ้นนี้ที่ไหน
Shivam

@shivam คุณต้องเพิ่มรหัสนี้ไปยังโมดูลที่กำหนดเองที่คุณสร้าง
user5013

วางสิ่งนี้ลงใน hook_update_N เพื่อให้ทำงานเพียงครั้งเดียว
Achraf JEDAY

นอกจากนี้สิ่งนี้จะไม่เปลี่ยนค่าเก่าที่อนุญาตหากมีการใช้งานฟิลด์นี้อยู่แล้ว
Achraf JEDAY

3

คุณควรใช้allowed_values_functionกับการโทรกลับ:

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

ดูการสร้างตัวเลือกค่าแบบไดนามิกได้รับอนุญาตให้ข้อมูลกิจการ


คำตอบที่สมบูรณ์มากขึ้นจะเป็นประโยชน์ รหัสที่คุณอ้างอิงนั้นดีและทำงานคล้ายกับคำตอบที่ยอมรับ แต่ถูกสร้างขึ้นเพื่อใช้กับโมดูลคุณสมบัติ
Johnathan Elmore
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.