Điểm:0

Lặp lại các gói để tạo lớp gói thực thể cho từng gói

lá cờ in

Tôi tò mò liệu có ai có cách tạo lớp gói thực thể cho nhiều gói cùng một lúc không. Ví dụ:

chức năng MYMODULE_entity_bundle_info_alter(&$bundles) {

  // Mảng của tôi có các loại nội dung khác nhau.
  $target_bundles = ['trang', 'bài viết'];

  // Lặp lại các loại nội dung.
  foreach($target_bundle as $bundle) {

    $Bundle = ucfirst($bundle); // trang tới trang
    $bundles['node'][$bundle]['class'] = $Bundle::class; // Trang::lớp

  }
}

Vấn đề tôi đang gặp phải là $Gói::lớp một phần không hoạt động. Điều này có thể không?

Dylan avatar
lá cờ kr
Tôi nghĩ rằng bạn đã đặt sai tên lớp, tôi sẽ gỡ lỗi trả về cho `EntityTypeBundleInfoInterface->getBundleInfo('node);`.và tham khảo 'ContentEntityStorageBase'
user106977 avatar
lá cờ in
Cảm ơn, Dylan. Tôi đã chỉnh sửa mẫu mã của mình vì một số lỗi. Lỗi tôi gặp phải là: **Fatal error:** Cannot use ::class with dynamic class name. Điều này đã cho tôi chỉ đúng hướng. Tôi không hiểu rằng `::class` chỉ trả về không gian tên đầy đủ của lớp. Khi tôi thêm nó vào chuỗi nối cho biến $Bundle, mọi thứ đều hoạt động. Tôi sẽ đăng mã làm việc trong câu trả lời. Cảm ơn một lần nữa!
Điểm:1
lá cờ in

Sau khi tìm hiểu xung quanh, tôi nhận ra lỗi mình gặp phải:
Lỗi nghiêm trọng: Không thể sử dụng ::class với tên lớp động

Tóm lại, vấn đề của tôi là tôi không hiểu điều đó ::lớp chỉ cần trả về không gian tên đầy đủ của chính lớp đó. Khi tôi đã thêm vào không gian tên đầy đủ vào gói $ biến, mọi thứ hoạt động tốt. Đoạn mã dưới đây cung cấp một cách hiệu quả để gán nhiều gói thực thể cho các lớp tương ứng của chúng.

function mymodule_entity_bundle_info_alter(&$bundles) {

  // Mảng nội dung kiểu tên máy.
  $target_bundles = ['trang', 'bài viết'];

  // Lặp lại các loại nội dung.
  foreach($target_bundle as $bundle) {

    // Biến 'trang' thành 'Trang' và thêm vùng tên đầy đủ.
    $Bundle = 'Drupal\mymodule\Entity\' . ucfirst($bó);

    $bundles['node'][$bundle]['class'] = $Bundle;
  }
} 

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.