Điểm:0

Tìm giá trị của trường khác trong bộ định dạng trường

lá cờ in

Điều này có thể phức tạp để giải thích

Tôi có một loại nội dung với trường_1, trường_2, v.v.

trường_1 là tham chiếu phân loại

trường_2 là trường tùy chỉnh có nhiều giá trị phụ khác nhau

Tôi có một trình định dạng tùy chỉnh cho trường_2 thực hiện tất cả mọi thứ để treo các giá trị phụ vào đầu ra mong muốn, tuy nhiên, bây giờ tôi có một điều kiện cho một giá trị nhất định của trường_1 yêu cầu một định dạng khác xảy ra với trường_2 không phụ thuộc trên các giá trị trường_2.

Tôi cần trình định dạng để xử lý việc này vì trường sẽ được yêu cầu trong các tình huống đầu ra khác nhau (mô-đun tùy chỉnh, dạng xem, xuất XML) và tôi không muốn phải xây dựng nhiều cơ chế để xử lý dữ liệu.

Do đó, câu hỏi của tôi là làm thế nào tôi có thể lấy trường_1 từ bên trong bộ định dạng của trường_2 để tôi có thể áp dụng logic định dạng có điều kiện cho nó.

Tôi có thể sửa đổi trường_2 để chứa cờ nhằm kiểm soát định dạng này, tuy nhiên, có > 20 nghìn bản ghi để thêm giá trị vào trong khi đó là 1 trường bổ sung trong bản ghi phân loại có ít hơn 25 giá trị, nó cũng sẽ cho phép người chỉnh sửa đặt cờ định dạng độc lập với phân loại đã chọn và có thể là giá trị được hiển thị không chính xác. Tôi có thể chuyển các giá trị cho trình định dạng từ mã mô-đun tùy chỉnh, tuy nhiên, điều này cần được áp dụng khi người dùng "bình thường" tạo chế độ xem của riêng họ hoặc người khác đưa trường trở lại chế độ xem hoặc trang.

Hy vọng điều này có ý nghĩa

Điểm:0
lá cờ ru

Bạn có thể lấy thực thể máy chủ bên trong trình định dạng trường của mình bằng $items->getParent()->getEntity(), sau đó truy vấn tất cả các trường khác, ví dụ:

lớp MyCustomFormatter mở rộng FormatterBase {
  chức năng công khai viewElements(FieldItemListInterface $items, $langcode) {
    $parentEntity = $items->getParent()->getEntity();
    $otherFieldValue = $parentEntity->get('field_foo')->first()->getValue();
    foreach ($items as $delta => $item) {
      $elements[$delta] = your_custom_formatter_logic_here($otherFieldValue);
    }
    trả lại các phần tử $;
  }
}

Nếu bạn đang truy vấn các thực thể khác ở đây, đừng quên hợp nhất chúng vào $elements[$delta]['#cache']['tags']

Alex Monaghan avatar
lá cờ in
Tuyệt vời, điều đó thực sự hữu ích và tôi đoán phải có một cách rất đơn giản.

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