Tôi đang chuyển một mô-đun từ Drupal 7 sang Drupal 8. Trong cài đặt cấu hình của mô-đun này, tôi cần lấy danh sách các loại trường hiện có.
Trong Drupal 7, điều này đã đạt được bằng cách sử dụng field_info_field_types()
chức năng.
Trong Drupal 8 (8.0.0-rc3), tôi gặp lỗi "chức năng không tồn tại", mặc dù thông tin được nêu trong trang Trợ giúp Tham khảo API Drupal , đã hết hạn.
Sau đó, điều tra tôi tìm thấy một trang DrupalContrib , nơi hàm được khai báo không dùng nữa và đề xuất sử dụng ngay bây giờ Drupal::service('plugin.manager.entity.field.field_type')->getDefinitions()
.
Nhưng sử dụng nó gây ra một lỗi khác "Plugin dịch vụ không xác định.manager.entity.field.field_type", may mắn được liên kết với đề xuất "Bạn có nghĩa là plugin.manager.field.field_type?"
Vì vậy, tôi đã thử sử dụng Drupal::service('plugin.manager.field.field_type')->getDefinitions()
và wow: Tôi đã nhận được các loại trường dự kiến.
Nhưng mỗi thành viên mảng (một loại trường) hiện là một đối tượng (thay vì mảng con) và dữ liệu tôi đang tìm kiếm được lồng trong các thuộc tính được bảo vệ, vì vậy tôi không thể truy cập chúng.
Ở giai đoạn này, tôi bị mắc kẹt. Tôi đã xem nó có thể tồn tại một số lớp mà tôi có thể mở rộng để điều hướng qua các dữ liệu này, nhưng không có gì may mắn: tôi đáng chú ý thậm chí không thể tìm ra thành phần nào trong Drupal 8 trong đó các định nghĩa kiểu trường được tập trung.