it-swarm.dev

새 필드 인스턴스 작성시 여러 값

이것은 내가 실제로 가지고있는 코드입니다.

$instance = array(
    'field_name' => FIELD_PROJECT_TAGS,
    'entity_type' => 'node',
    'label' => $vocabulary->name,
    'bundle' => 'portfolio_project',
    'required' => true,
    'widget' => array(
        'type' => 'taxonomy_autocomplete',
        'behaviors' => array(
            'multiple values' => FIELD_CARDINALITY_UNLIMITED,
        ),
    ),
    'display' => array(
        'default' => array(
            'type' => 'taxonomy_term_reference_link',
            'weight' => 10,
        ),
        'teaser' => array(
            'type' => 'taxonomy_term_reference_link',
            'weight' => 10,
        ),
    )
);
field_create_instance($instance);

이게 뭐가 문제 야? 포트폴리오 모듈이 항상 하나의 값만 허용하여이 필드를 설치하는 이유는 무엇입니까?

누군가 도울 수 있기를 바랍니다. 조금 실망했습니다.

4
Johnny

여러 값을 허용하는 필드를 만들려면 cardinality-1 사용할 때 field_create_field. 그런 다음 모든 인스턴스는 여러 값을 허용합니다 (위젯이 지원하는 경우).

예:

field_create_field([
  'cardinality' => -1,
  'field_name' => 'field_unlimited',
  'type' => 'special_content',
  'entity_types' => ['node'],
]);
2
james_alvarez

Field API 에보고 된대로 widget 배열에 사용되는 배열 인덱스는 다음과 같습니다.

  • type (string) 위젯의 유형입니다 (예 : text_textfield). 위젯 유형은 hook_field_widget_info () 를 구현하는 모듈로 정의됩니다.
  • 설정 (배열) 위젯 유형별 설정의 키/값 쌍의 하위 배열. 각 필드 위젯 유형 모듈은 자체 위젯 설정을 정의하고 문서화합니다.
  • 가중치 (float) 엔티티 편집 양식의 다른 요소에 대한 위젯의 가중치입니다.
  • module (문자열, 읽기 전용) 위젯 유형을 구현하는 모듈의 이름입니다.

필드 위젯의 동작을 정의하는 것은 hook_field_widget_info()입니다.

function hook_field_widget_info() {
  return array(
    'text_textfield' => array(
      'label' => t('Text field'), 
      'field types' => array('text'), 
      'settings' => array('size' => 60), 
      'behaviors' => array(
        'multiple values' => FIELD_BEHAVIOR_DEFAULT, 
        'default value' => FIELD_BEHAVIOR_DEFAULT,
      ),
    ), 
    'text_textarea' => array(
      'label' => t('Text area (multiple rows)'), 
      'field types' => array('text_long'), 
      'settings' => array('rows' => 5), 
      'behaviors' => array(
        'multiple values' => FIELD_BEHAVIOR_DEFAULT, 
        'default value' => FIELD_BEHAVIOR_DEFAULT,
      ),
    ), 
    'text_textarea_with_summary' => array(
      'label' => t('Text area with a summary'), 
      'field types' => array('text_with_summary'), 
      'settings' => array(
        'rows' => 20,
        'summary_rows' => 5,
      ), 
      'behaviors' => array(
        'multiple values' => FIELD_BEHAVIOR_DEFAULT, 
        'default value' => FIELD_BEHAVIOR_DEFAULT,
      ),
    ),
  );
}

필드가 여러 값을 사용할 수 있도록 작성중인 모듈이 해당 후크를 구현해야합니다.

분류 위젯은 쉼표로 구분하여 여러 값을 입력하여 입력 할 수 있습니다. 위젯이 페이지에 두 번 이상 나타날 것으로 예상되는 경우 해당 위젯이 작동하는 방식이 아닙니다. 다른 위젯은 더 많은 양식 필드를 사용하여 여러 값을 포함 할 수 있습니다.

1
kiamlaluno