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
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