web-dev-qa-db-fra.com

Comment mettre à jour par programme les valeurs autorisées d'un champ de liste?

J'ai créé une liste de sélection pour un compte Profile2 dans Drupal 7. Dans la liste des valeurs autorisées, j'ai ajouté quelques valeurs. Maintenant, ce que je voudrais faire, c'est mettre à jour par programme les valeurs de cette liste (ajouter, supprimer ou mettre à jour). Je ne veux pas utiliser form_alter car je veux que ces mises à jour soient validées dans la base de données. Mon problème est que je n'arrive pas à trouver où ces valeurs sont stockées dans la base de données ou comment extraire ces valeurs à partir de Profile2, mettez-les à jour puis enregistrez-les.

J'ai googlé haut et bas sur ce problème particulier et je ne trouve pas de réponse sur la façon de le faire. J'espère que quelqu'un pourra m'aider.

Merci.

10
user5013

Quelque chose dans le sens de ...

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

Vous feriez mieux d'utiliser le allowed_values_function avec un rappel:

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

Voir Création d'options de valeurs autorisées dynamiques pour un champ d'entité .

3
mpp