2017-03-10 2 views
0

내가해야 할 일은 필드 위젯에 노드에 대한 링크를 추가하는 것입니다 (노드는 필드를 올바르게 컴파일하기위한 형식화 된 지침을 포함하고 있습니다).Drupal의 필드 위젯에 요소 추가하기 8

지금까지 내가 타사 설정을 사용하여 필드 구성 형태로 노드 참조 필드를 추가 할 수있었습니다 :

이제
function mymodule_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) { 
    if ($form_id === 'field_config_edit_form' && $form_state->getFormObject()->getEntity()->get('entity_type') == 'myentity') { 

    $field = $form_state->getFormObject()->getEntity(); 
    $help_page_id = $field->getThirdPartySetting('mymodule', 'help_page_id'); 

    $form['help_page_id'] = array(
     '#type' => 'entity_autocomplete', 
     '#title' => t('Help page'), 
     '#target_type' => 'node', 
     '#selection_handler' => 'default', 
     '#selection_settings' => array(
     'target_bundles' => array('help_page'), 
    ), 
     '#default_value' => $help_page_id ? Node::load($help_page_id) : NULL, 
     '#weight' => 100, 
    ); 

    $form['#entity_builders'][] = 'mymodule_form_field_config_edit_form_builder'; 
    } 
}

내가 양식을 표시 할 때이 정보를 검색하는 문제에 봉착하고 링크를 표시하기 위해 필드 위젯을 변경합니다.

function mymodule_field_widget_form_alter(&$element, \Drupal\Core\Form\FormStateInterface $form_state, $context) { 

} 

내가 필드 구성 개체를로드 할 것 같아요,하지만 난 방법을 모르는 : hook_field_widget_form_alter를 사용 , 나는이 논쟁에서 사용자 지정 구성 값을 얻을 수 없습니다.

+0

나는 코드를보고 문제를 쉽게 찾을 수있을 것 같아요. 말한대로 문제를 알기가 어렵거나 코드 또는 캐싱 문제에 문제가있을 수 있습니다. – penyaskito

+0

원본 코드를 코드로 편집했습니다. 감사. –

답변

0

나는 그것을 테스트하지 못했지만,이 같은 작업을해야합니다 :

function mymodule_field_widget_form_alter(&$element, \Drupal\Core\Form\FormStateInterface $form_state, $context) { 
    // Add a suffix to widget form elements for all fields of type entity_reference. 
    $field_definition = $context['items']->getFieldDefinition(); 
    if ($field_definition->getType() == 'entity_reference') { 
    // TODO: Render the node link to $link 
    $element['#suffix'] = $link; 
    } 
} 
+0

제 3 자 설정이되어 있지만 힌트가 맞는지 확인하기 위해 코드를 편집했습니다. 찾으려는 컨텍스트는 $ context [ 'items'] -> getFieldDefinition()입니다. 감사! –