2012-11-20 12 views
5

Ich frage mich, ob ich programmgesteuert eine CCK-Feldinstanz erstellen und die "allowed_values" in einer einzigen Stufe einfügen kann. Also habe ich versucht, dies:Liste erlaubte Werte programmgesteuert in drupal 7 hinzufügen CCK-Feld "list_text"

field_create_instance(array(
    'field_name' => 'card number', 
    'entity_type' => 'payment_method', 
    'bundle' => 'debit_card', 
    'label' => t('Debit/Credit card'), 
    'description' => t('Add card\'s number '), 
    'widget' => array(
     'type' => 'options_select', 
     'weight' => 0, 
     'settings' => array('size' => 50), 
    ), 
    'required' => TRUE, 
)); 

ich einige Fall habe versucht das heißt in 'Einstellung' gesetzt => array ('ALLOWED_VALUES' => Array (1, 2, 3)), aber es ist nichts passiert. Irgendwelche Vorschläge?

Antwort

3

Lösung:

function MY_MODULE_install() { 
    field_create_field(array(
    'field_name' => 'months', 
    'type' => 'list_text', 
    'cardinality' => 1, 
    'settings' => array('allowed_values_function' => 'get_months'), 
    'entity_types' => array('user', 'node'), 
)); 
} 

function get_months() { 
    $months = array('01', '02', '03',...'12'); 
    return $months; 
} 

Warnung: Callback-Funktion immer in * .module Datei Ihrer benutzerdefinierten Modul sein muss.

+1

Von [link] (https://www.drupal.org/node/876250): _Dieser Hook wird aufgerufen, wenn das Modul zum ersten Mal aktiviert wird. So wird Ihre Liste bis zum nächsten Deaktivieren/Aktivieren des Moduls – augusto

+1

eingefroren Der Haken wird aufgerufen, wenn das Modul aktiviert ist. Die Funktion wird immer dann aufgerufen, wenn das Feld gerendert wird, so dass Sie die Liste ändern können. –