2012-11-20 23 views
5

Programlı bir CCK alan örneği oluşturabilir ve "allowed_values" öğesini tek bir aşamada ekleyebilir miyim diye merak ediyordum. Yani bu çalıştı:drupal 7 CCK alanında programlı olarak izin verilen değerler listesi "list_text"

Ben 'ayarı' => dizideki ayarlamak için yani bazı dava denedim
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, 
)); 

('allowed_values' => array (1, 2, 3)) ama hiçbir şey olmadı. Baska öneri?

cevap

3

Çözüm:

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

Uyarı: Geri arama işlevi her zaman özel modülün * .module dosyasında olmalıdır.

+1

[link] 'den (https://www.drupal.org/node/876250): _Bu modül ilk etkin olduğunda bu kanca çağrılır. Böylece, listeniz bir sonraki devre dışı bırak/etkin hale getirme modülüne ( – augusto

+1

Modül etkinleştirildiğinde kanca çağrılır. Alan oluşturulduğunda işlev çağrılır, böylece listeyi değiştirme olasılığınız olur. –