2017-01-23 5 views
0

사용자 정의 블록에 link 필드를 갖고 싶습니다. 내가 관리자/구조/블록에 갈 때Drupal 8 블록 형식의 필드 링크 추가

public function blockForm($form, FormStateInterface $form_state) 
{ 

    $form['key_1'] = [ 
     '#title' => $this->t('Key 1 label'), 
     '#type' => 'textfield', 
     '#default_value' => '', 
     '#required' => false, 
    ]; 

    $form['key_2'] = [ 
     '#title' => $this->t('key 2 link'), 
     '#type' => 'link', 
    ]; 

    return $form; 
} 

이제,// ​​myblock 관리, 내 key 1 필드를 볼 수 있습니다 여기에 그렇게 내 코드입니다. key 2이 렌더링되지 않습니다. 다른 유형 (텍스트 필드, 텍스트 영역, file_managed)에 대한 유형을 변경하면 내 필드가 올바르게 렌더링됩니다. 기본 링크 모듈이 사용됩니다.

노드 형식에서만 링크 필드 유형을 사용할 수 있습니까? 이유를 이해할 수 있습니다.

답변

2

Link 클래스를 살펴보십시오. #url 속성을 지정해야합니다.

$form['key_2'] = [ 
    '#title' => $this->t('key 2 link'), 
    '#type' => 'link', 
    '#url' => \Drupal\Core\Url::fromRoute('some.route.name'), 
]; 
+0

링크 위젯 형식이 아닌 링크를 직접 렌더링합니다. –

+0

그런 다음''#type '=>'url''을 대신 사용하십시오 –

관련 문제