2017-01-23 9 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はレンダリングされません。私が他の(textfield、textarea、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''を使用してください –

関連する問題