Điểm:0

Cách tối ưu để có được định nghĩa trường của loại nội dung

lá cờ in

Khi tôi cần định nghĩa trường của loại nội dung trong Drupal 8+, tôi đã từng chạy đoạn mã sau (để lấy trường 'body' trong 'trang' loại nội dung):

$page_fields = \Drupal::getContainer()->get('entity_field.manager')
               ->getFieldDefinitions('nút', 'trang'); 
$body_definition = $page_fields['body'];

Tôi đã học được rằng nó cũng có thể thực hiện được bằng cách chạy đoạn mã sau:

$body_definition = \Drupal::entityTypeManager()
                  ->getStorage('field_config')
                  ->load('node.page.body');

Bây giờ câu hỏi của tôi là, lợi thế của cái này so với cái kia là gì? Phần sau tất nhiên chỉ có một dòng, nhưng đó không thể là kết thúc của câu chuyện, tôi đoán vậy. Một trong những cách này có phải là "cách Drupal" không?

Điểm:2
lá cờ cn

Định nghĩa trường có thể được xác định ở những nơi khác nhau. Ví dụ mã đầu tiên nhận tất cả các định nghĩa, ví dụ mã thứ hai chỉ định nghĩa trường cụ thể và nó chỉ tìm thấy các trường được định cấu hình.

Dịch vụ entity_field.manager chịu trách nhiệm khám phá các trường ở nhiều vị trí, cấu hình và nhiều phương pháp khác nhau trong mã, có thể được mở rộng trong tương lai để tìm nhiều hơn nữa. Vì vậy, sử dụng dịch vụ này là cách chung nhất để nhận định nghĩa trường.

Sử dụng \Drupal chỉ trong móc, không phải trong lớp. Và sau đó bạn có thể tham khảo các dịch vụ qua \Drupal::service('entity_field.manager'), bạn không cần phải lấy vùng chứa.

Paul avatar
lá cờ in
Cám ơn 4k4 nhiều. Vì tò mò, trường nào khác có thể được xác định nếu không có trong cấu hình (db)? Điều này có bao gồm các tệp cấu hình không, ví dụ: nếu có một trường được xác định trong tệp yml (chưa được nhập)?
4uk4 avatar
lá cờ cn
Không, trình quản lý trường không đọc trực tiếp các tệp YAML, chỉ có cấu hình đang hoạt động trong db. Thông thường các trường cơ sở được xác định trong lớp thực thể và các trường gói trong cấu hình. Nhưng có rất nhiều phương pháp khác để tạo hoặc thay đổi định nghĩa trường. Ví dụ, các trường gói cũng có thể được xác định trong lớp thực thể. Cũng trong móc. Nhưng điều này hiếm khi được sử dụng.

Đă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.