web-dev-qa-db-ja.com

Drupal 8形式で「条件に同意する」チェックボックスを追加する方法

Drupal 8連絡フォームから this answerthis answer そしてさらに- このモジュール しかし、どれも私にとってはうまくいきません。

基本的に、「このサイトの利用規約に同意します」というテキストを表示するチェックボックスを表示したいだけであり、「利用規約」という言葉をサイトのそれぞれのページにリンクする必要があります。新しいタブ。

Drupal 8でコードまたはモジュールを介してこれを実現する方法についてのアイデアは、非常に高く評価されています

これは.themeファイルで使用してみたコードです

function <theme_name>_form_alter(&$form, $form_state, $form_id) {
  switch ($form_id) {
    case 'field_config_edit_form':
      $form['default_value']['widget'][1] = array(
        '#type' => 'checkbox',
        '#title' => t('Your checkbox'),
        '#size' => 10,
        '#maxlength' => 255,
        '#default_value' => 1,
        '#required' => TRUE,
        '#description' => '<p>' . t('Your checkbox altered.') . '</p>',
    );
    break;
  }
}

そして、私はこれをサイトのすべてのお問い合わせフォームで行う必要があります

2
Yoosuf

あなたのコードはD7でした チェックボックス#size#maxlengthで何をすべきか? :)

この答えは、あなたが Devel サブモジュールKintをインストールしていることを前提としています。

/**
 * Implements hook_form_alter().
 */
function THEME_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {

  ksm($form_id); // Remove when done.

  if ($form_id == 'MY_FORM_ID') {

    $form['tos'] = [
      '#type'          => 'checkbox',
      '#title'         => t('Terms and Conditions'),
      '#required'      => TRUE,
      '#default_value' => TRUE,
    ];
  }
}

これをチェックしてください フォームAPIの概要

1
leymannx