Điểm:0

Truy cập trường Đoạn văn từ bên trong đoạn gốc

lá cờ us

Tôi có một tệp twig đoạn mà tôi đang thêm vào chủ đề con của mình.

Bên trong nó, tôi có một đoạn khác đang được sử dụng. Và có thể có nhiều hơn 1 đoạn con.

Tôi có mã này:

 {% cho khóa, mục trong content.field_faq_section_question if key|first != '#' %}
  {{ mục }}
    
{% endfor %}

Và nó in đúng tiêu đề và các trường văn bản của đoạn văn. Nhưng những gì tôi cần làm là truy cập từng cái riêng lẻ ở đây.

Tôi đã thử rất nhiều cách khác nhau để truy cập vào các trường và không có cách nào hiệu quả. Một kết xuất và một var_dump của mục kết thúc bằng một màn hình trống.

Tôi có thể tạo một tệp twig khác cho đoạn này và nó hoạt động, nhưng tôi hy vọng sử dụng khóa để thêm id vào div trình bao bọc.

Tôi muốn:

 {% cho khóa, mục trong content.field_faq_section_question if key|first != '#' %}
  {{ danh mục }}
    {{ item.text }}
{% endfor %}

Cách nào là tốt nhất để thực hiện việc này?

4uk4 avatar
lá cờ cn
*Để sử dụng khóa để thêm id vào div trình bao bọc* bạn cần có mẫu trường, không phải mẫu đoạn văn: `field--paragraph--field-faq-section-question.html.twig`
sonfd avatar
lá cờ in
Bạn nên cẩn thận khi làm những việc như thế này. Nếu bạn hiển thị những thứ như thế này thì bạn không hiển thị toàn bộ trường, có thể bỏ qua các thuộc tính hoặc siêu dữ liệu bộ đệm quan trọng, v.v. mà có thể đã được thêm vào bởi các mô-đun hoặc chủ đề. Nói chung, tốt hơn hết là bạn không nên chống lại các hệ thống của Drupal để “không tạo tệp khác” hoặc một số lý do tương tự. Chiến đấu với những hệ thống này cuối cùng bạn sẽ bắt kịp, tôi hứa. :)
Điểm:0
lá cờ cn

Đầu tiên, tôi muốn giới thiệu https://www.drupal.org/project/twig_xdebug để giúp bạn gỡ lỗi bên trong các mẫu cành cây. Nó sẽ làm cho cuộc sống của bạn dễ dàng hơn gấp 100 lần.

vấn đề của bạn là nội dung.field_faq_section_question là một mảng kết xuất, vì vậy việc lặp qua các "mục" của nó không thực sự lặp qua các thực thể được tham chiếu -- nó đang lặp qua các phần tử mảng kết xuất. Đó là lý do tại sao bạn cần thêm kiểm tra khó chịu đó xem liệu khóa có bắt đầu bằng #.

Nếu bạn muốn lặp qua giá trị của trường tham chiếu, sau đó bạn cần lặp lại trường #mặt hàng. Sau đó, bạn cần lấy đoạn thực tế đang được tham chiếu để truy cập các trường của nó, điều này có thể được thực hiện với [some_entity_reference_item].thực thể.

{% cho k, tham chiếu đoạn văn trong content.field_faq_section_question['#items'] %}
  {% đặt đoạn = đoạn_reference.entity %}
  {% set my_id = đoạn.field_some_text_field.0.value %}

  <div id="{{ my_id }}">
    // ... bất cứ điều gì bạn muốn kết xuất
    // Tôi nghĩ cái này sẽ hoạt động giống như cái {{ item }} bạn đang dùng
    {{ content.field_faq_section_question[k] }}
  </div>
{% endfor %}

Điều đó nói rằng, tùy thuộc vào những gì bạn đang làm, bạn có thể muốn sử dụng một mẫu trường như 4uk4 đã đề cập hoặc thực sự tận dụng một mẫu đoạn văn khác (như bạn đang tránh).

William Breindel avatar
lá cờ us
Đây là những gì tôi cần và cần phải biết. Cảm ơn bạn rất nhiều. hoạt động như một nét duyên dáng.
lá cờ cn
Tuyệt quá! Vui lòng chấp nhận câu trả lời này khi bạn có thể để nó không bị bot SE đưa trở lại trang nhất trong thời gian còn lại. :)

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