Drupal 8 nhận giá trị trường loại nội dung

Lấy danh sách các loại nội dung từ trang web Drupal 9 rất hữu ích trong một số trường hợp. Hầu hết, tôi thấy rằng khi tạo một loại dịch vụ nào đó, tôi cũng sẽ tạo một biểu mẫu quản trị cho dịch vụ đó để cho phép hạn chế dịch vụ đó ở một số loại nội dung nhất định. Danh sách này có thể được lưu vào cấu hình để khi chạy dịch vụ, nó chỉ ảnh hưởng đến một số loại nội dung nhất định, dựa trên cấu hình đã lưu

Để lấy một mảng chứa danh sách các loại nội dung trên trang Drupal, bạn có thể sử dụng đoạn mã sau

$entityTypeManager = \Drupal::service['entity_type.manager'];

$types = [];
$contentTypes = $entityTypeManager->getStorage['node_type']->loadMultiple[];
foreach [$contentTypes as $contentType] {
  $types[$contentType->id[]] = $contentType->label[];
}

Thao tác này tạo danh sách các loại nội dung hiện được cài đặt trên hệ thống của bạn. Đây là danh sách các thực thể \Drupal\node\Entity\NodeType để chúng tôi có thể trích xuất tên máy của loại nội dung bằng phương thức id[] và tên có thể đọc được của loại nội dung bằng phương thức label[]. Đoạn mã trên sẽ tạo ra một cái gì đó giống như sau trên bản cài đặt tiêu chuẩn của Drupal

Array
[
    [article] => Article
    [page] => Page
]

Bạn cũng có thể đưa chức năng này vào biểu mẫu để tạo danh sách các hộp kiểm có thể được lưu vào cấu hình. Nếu bạn mở rộng từ ConfigFormBase, bạn có thể dễ dàng tạo một biểu mẫu sẽ lưu danh sách các loại nội dung vào cấu hình hệ thống. Khối mã sau đây là một lớp biểu mẫu sẽ in ra danh sách các loại nội dung dưới dạng hộp kiểm

Chủ Đề