Tôi đang sử dụng đoạn mã sau để xử lý trước các biến cho mẫu của mình:
function template_preprocess_imagegallery_format(&$vars) {
template_preprocess_image_formatter($vars);
$vars['image']['#theme'] = 'igimage';
$vars['image']['#thumbnail'] = ImageStyle::load('thumbnail')->buildUrl($vars ['image']['#uri']);
$vars['image']['#fullimage'] = file_create_url($vars ['image']['#uri']);
}
Biến #uri đã có sẵn và nếu tôi chỉ sửa đổi thì mọi thứ đều hoạt động tốt. Nhưng tôi cần thêm các biến bổ sung ở đây vì tôi cần hai kiểu khác nhau của cùng một hình ảnh. Nhưng chỉ cần thêm các biến đó vào mảng không hoạt động.
Nếu tôi kết xuất các biến có sẵn trong mẫu Twig của mình {{ dump(_context|keys) }}
, tôi sẽ không thấy các biến tôi đã thêm ở đó. Nếu tôi cố gắng sử dụng chúng trong mẫu của mình, không có gì được chèn vào.
Tôi có thể thấy rằng các giá trị được thêm vào mảng, khi tôi kết xuất biến hình ảnh trong chủ đề kết xuất toàn bộ trường, tôi thấy các biến của mình trong mảng. Nhưng chúng vẫn không có sẵn trong mẫu biểu hiện chính biến hình ảnh.
Tôi cần làm gì khác để thêm một biến trong hàm tiền xử lý mà tôi có thể sử dụng trong mẫu Twig của mình?
template_preprocess_imagegallery_format
thay thế 'mẫu' bằng tên chủ đề hoặc mô-đun của bạn. Bạn cũng sẽ cần xóa bộ nhớ cache.
$vars
và các khóa của bạn (ví dụ['image']
). Tôi khá chắc chắn rằng điều đó không được phép.