Skip to main content

[Thủ Thuật Drupal] Drupal 8,9 - Tạo field có điều kiện trong Form API

Code snippet được sử dụng để ẩn / hiện có điều kiện một trường trong form bằng code trong Drupal 8/ Drupal 9.

Nếu bạn muốn ẩn / hiện một field trong form dựa trên một giá trị cụ thể từ một trường khác, Form API với thuộc tính #states cho phép dễ dàng hiển thị hoặc ẩn, bật hoặc tắt, yêu cầu hoặc thu gọn các field trong form dựa trên các giá trị được chọn hoặc nhập vào từ trường khác.

Trường có điều kiện - Conditional Fields 

Ví dụ: chỉ bật radio nếu hộp văn bản cms tùy chỉnh trống

$form['cms'] = [
  '#type' => 'radios',
  '#title' => $this->t('Select a cms'),
  '#options' => [
    'drupal' => $this->t('Drupal'),
    'wordpress' => $this->t('Wordpress'),
    'joomla' => $this->t('Joomla'),
    'other' => $this->t('Other'),
  ],
  '#attributes' => [
    'name' => 'field_select_cms',
  ],
  '#states' => [
    'enabled' => [
      ':input[name="field_other_cms"]' => ['value' => ''],
    ],
  ],
];

Kết quả:

Image
status_form

 

Chỉ hiển thị textfield này nếu 'other' được chọn

$form['other_cms'] = [
  '#type' => 'textfield',
  '#placeholder' => 'Enter your cms',
  '#attributes' => [
    'name' => 'field_other_cms',
  ],
  '#states' => [
    'visible' => [
      ':input[name="field_select_cms"]' => ['value' => 'other'],
    ],
  ],
];
Image
 chỉ hiển thị textfield này nếu 'other' được chọn