Tập tành tạo field có điều kiện trong Form API

7th May 2022
Table of contents

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

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'],
    ],
  ],
];
status_form

 

Bạn thấy bài viết này như thế nào?
0 reactions

Add new comment

Image CAPTCHA
Enter the characters shown in the image.
Câu nói tâm đắc: “Điều tuyệt với nhất trong cuộc sống là làm được những việc mà người khác tin là không thể!”

Related Articles

Master list (in progress) of how to get parts of fields for use in Twig templates. I’m always having to look these up, so I thought I’d hash them out and write them down.

Litespeed Cache là plugin WordPress dùng để kết hợp với Web Server LiteSpeed nhằm tăng tốc website WordPress của bạn gấp nhiều lần

In this article, we are going to see how some tools & libraries will make people's lives easier during the development & code review process.

In this tutorial, you will learn how to improve the custom code, theme and module, and general code development by using the pre-commit hook on git

Trước khi tìm hiểu xem PHP Code Sniffer là gì thì các bạn cần phải nắm được coding convention là gì đã.