Tôi muốn xuất một chuỗi JSON như một phần của thuộc tính dữ liệu trên thẻ HTML cho một mẫu trong Drupal 7. Đối với tôi, tôi không thể hiểu tại sao nó không hoạt động (hoạt động hoàn hảo trong 8+).
Tôi cần liệt kê một tập hợp các url hình ảnh và kích thước phương tiện sẽ được Javascript phân tích cú pháp sau này.
Trong mẫu.php:
$variables['background_images'] = [];
$variables['background_images'][] = [
'srcset' => 'https://placeimg.com/1600/600/tech, https://placeimg.com/3200/1200',
'phương tiện' => '(độ rộng tối thiểu: 100rem)',
];
$variables['background_images'][] = [
'srcset' => 'https://placeimg.com/1600/600/tech, https://placeimg.com/3200/1200',
'phương tiện' => '(độ rộng tối thiểu: 48rem)',
];
$variables['background_images'] = json_encode($variables['background_images']);
Trong tệp tpl:
<div data-background="<?php print $background_images; ?>"></div>
Đầu ra là một loạt các vấn đề trong trình duyệt. Các URL được thoát và có nhiều dấu ngoặc kép hơn tôi đã nhập:
data-background="[{" srcset":"https:\="" \="" placeimg.com\="" 1600\="" 600\="" tech,="" https:\="" 3200\="" 1200","media":"(min-width:="" 100rem)"},{"srcset":"https:\="" 48rem)"}]"
Tôi không thể hiểu tại sao lại có một khoảng cách thừa trên các phím hoặc tại sao nó thoát ra sớm và phá vỡ phần còn lại của nó.Nó có vẻ đúng (với tôi) với xdebug, nhưng khi nó được in ra trình duyệt thì nó sai.
Cách thứ hai tôi cũng đã thử (tạo dữ liệu mẫu):
$items = [];
cho ($x = 0; $x < 3; $x++) {
$items[$x] = [
'srcset' => 'https://placeimg.com/1600/600/tech, https://placeimg.com/3200/1200',
'phương tiện' => '(độ rộng tối thiểu: 100rem)',
];
}
$variables['background_images'] = drupal_json_encode($items);