Wie kann ich die zulässigen Werte eines Listenfelds programmgesteuert aktualisieren?

10

Ich habe in Drupal 7 eine Auswahlliste für ein Profile2-Konto erstellt. In der Liste der zulässigen Werte habe ich einige Werte hinzugefügt. Jetzt möchte ich die Werte in dieser Liste programmgesteuert aktualisieren (hinzufügen, löschen oder aktualisieren). Ich möchte form_alter nicht verwenden, da diese Updates in die Datenbank übernommen werden sollen. Mein Problem ist, dass ich anscheinend nicht finde, wo diese Werte in der Datenbank gespeichert sind oder wie ich diese Werte aus Profile2 abrufen, aktualisieren und dann speichern kann.

Ich habe in diesem speziellen Thema hoch und niedrig gegoogelt und kann keine Antwort darauf finden. Ich hoffe jemand kann mir helfen.

Vielen Dank.

user5013
quelle

Antworten:

23

Etwas in der Art von ...

// 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);
Clive
quelle
Wo muss ich diesen Code hinzufügen?
Shivam
@shivam Sie müssen diesen Code einem benutzerdefinierten Modul hinzufügen, das Sie erstellen.
user5013
Fügen Sie dies in ein hook_update_N ein, um es nur einmal auszuführen.
Achraf JEDAY
Dies ändert auch nicht die alten zulässigen Werte, wenn das Feld bereits verwendet wird.
Achraf JEDAY
3

Verwenden Sie das besser allowed_values_functionmit einem Rückruf:

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

Siehe Erstellen dynamischer zulässiger Werteoptionen für ein Entitätsfeld .

mpp
quelle
Eine vollständigere Antwort wäre hilfreich. Der Code, auf den Sie verweisen, ist gut und funktioniert ähnlich wie die akzeptierte Antwort, wurde jedoch für die Verwendung mit dem Funktionsmodul erstellt.
Johnathan Elmore