2012-11-20 9 views
5

Mi chiedevo se posso creare a livello di codice un'istanza di campo CCK e inserire i "valori consentiti" in un'unica fase. Così ho provato questo:Aggiungi elenco valori consentiti a livello di codice in drupal 7 Campo CCK "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, 
)); 

Ho provato alcuni casi cioè di mettere in 'impostazione' => array ('allowed_values' => array (1, 2, 3)), ma non è successo niente. Eventuali suggerimenti?

risposta

3

Soluzione:

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; 
} 

Attenzione: la funzione di callback deve essere sempre in file * .module del modulo personalizzato.

+1

Da [link] (https://www.drupal.org/node/876250): _Questo hook verrà chiamato quando il modulo viene abilitato per la prima volta. Pertanto, l'elenco verrà bloccato fino al prossimo modulo di disabilitazione/abilitazione – augusto

+1

Il gancio verrà chiamato quando il modulo è abilitato. La funzione verrà richiamata ogni volta che viene eseguito il rendering del campo, quindi avrai la possibilità di modificare l'elenco. –