2012-11-20 4 views
5

프로그래밍 방식으로 CCK 필드 인스턴스를 만들고 "allowed_values"를 단일 스테이지에 삽입 할 수 있는지 궁금합니다. 그래서 난이 시도 :허용되는 값 목록을 프로그래밍 방식으로 drupal에 추가합니다. 7 CCK field "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, 
)); 

('allowed_values'=> 배열 (1, 2, 3))하지만 아무 일도하지 않습니다. 어떤 제안?

답변

3

솔루션 :

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

경고 : 콜백 함수는 항상 사용자 정의 모듈의 * .module 파일에 있어야합니다.

+1

[link] (https://www.drupal.org/node/876250)에서 : _ 모듈이 처음 활성화 될 때 _이 후크가 호출됩니다. _ 따라서 다음 목록이 비활성화되거나 활성화 될 때까지 고정됩니다 – augusto

+1

모듈이 활성화되면 훅이 호출됩니다. 필드가 렌더링 될 때마다 함수가 호출되므로 목록을 변경할 수 있습니다. –