Điểm:0

Chuyển một mảng PHP tới Twig?

lá cờ ph

Tôi muốn có thể truy cập vào một mảng trong mẫu Twig được tạo bằng PHP nhưng nó luôn xuất hiện trống, tôi có thiếu thứ gì không?

mytheme.theme

function mytheme_pre process_page(mảng &$variables) {
  $variables['myvar'] = 'foo';
}

trang.html.twig

{{ myvar }}

hoạt động như mong đợi nhưng nếu tôi chuyển một mảng thì điều này không hoạt động:

$variables['myvar'] = ['foo', 'bar'];

chỉ xuất ra không có gì

Điểm:1
lá cờ us

Để in tất cả các mục có trong mảng đó mà không cần biết nó chứa bao nhiêu mục, bạn có thể sử dụng đoạn mã sau.

{% cho khóa, var trong myvar %}
  {{ myvar[key] }}
{% endfor %}  

Nếu không, bạn chỉ cần sử dụng đoạn mã sau.

{{ myvar[0] }} {{ myvar[1] }}
Điểm:1
lá cờ cn

Có hai câu trả lời có thể tùy thuộc vào những gì bạn đang cố gắng đạt được. Bạn có thể lặp qua các mảng trong Twig như trong bất kỳ ngôn ngữ lập trình nào, xem câu trả lời khác.

Cụ thể đối với công cụ mẫu của Drupal là nếu bạn muốn Twig hiển thị một mảng theo cách đệ quy thì nó phải là một mảng có thể hiển thị. Điều này có nghĩa là mỗi phần tử không có phần tử con phải là phần tử kết xuất (#markup, #plain_text, #type hoặc #theme):

$variables['myvar'] = [
  0 => ['#plain_text' => 'foo'],
  1 => ['#plain_text' => 'thanh'],
];

sau đó

{{ myvar }}

kết xuất toàn bộ mảng.

Nhìn thấy https://www.drupal.org/docs/drupal-apis/render-api/render-arrays.

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