tôi muốn sử dụng Twig Tweak's drupal_view()
để hiển thị dạng xem trong mẫu đoạn văn của tôi. Tôi có một vài trường tham chiếu thực thể trên đoạn văn và cần ID của các thực thể được tham chiếu được chuyển dưới dạng đối số bộ lọc theo ngữ cảnh.
tôi đã xây dựng một Chuỗi bộ lọc theo ngữ cảnh bộ định dạng trường để định dạng chuỗi bộ lọc theo ngữ cảnh với hy vọng rằng nó có thể được chuyển trực tiếp dưới dạng giá trị của đối số. Trình định dạng sẽ trở lại tất cả các
nếu trường tham chiếu trống, nếu không, nó sẽ trả về ID thực thể được tham chiếu dưới dạng một chuỗi có dấu phân cách AND/OR, ví dụ: 1,2,3
cho VÀ hoặc 1+2+3
Cho hoặc.
Bên trong mẫu của tôi, tôi đang cố hiển thị chế độ xem bằng nhánh sau:
{% set arg1 = content.field_arg1|render %}
{% set arg2 = content.field_arg2|render %}
{{ drupal_view('my_view', 'my_display', arg1, arg2) }}
Dường như không hiệu quả!
Thay vì chuỗi, các biến arg của tôi thực sự là Drupal\Core\Render\Markup các đối tượng để các đối số không được truyền chính xác cho dạng xem.
Sau khi nghiên cứu, tôi thấy rằng tôi có thể giải quyết vấn đề này bằng cách lọc các biến đối số của mình bằng bộ lọc php trả về một chuỗi. Ví dụ: sử dụng bộ lọc trim hoạt động:
{% set arg1 = content.field_arg1|render|trim %}
{% set arg2 = content.field_arg2|render|trim %}
{{ drupal_view('my_view', 'my_display', arg1, arg2) }}
Nếu có thể, tôi muốn xây dựng một mảng kết xuất không yêu cầu bất kỳ bước chân ưa thích nào trong mẫu để chuyển các giá trị cho drupal_view()
chức năng. I E. một mảng kết xuất nơi tôi có thể vượt qua nội dung.field_arg1
hoặc nội dung.field_arg|render
trực tiếp như các đối số. Điều này có thể không?
Kết xuất các mảng tôi đã thử nhưng không hoạt động:
$inline_template = [
'#type' => 'inline_template',
'#template' => '{{ contextual_filter_string }}', // cũng đã thử với bộ lọc |trim tại đây
'#bối cảnh' => [
'contextual_filter_string' => '1+2+3',
],
];
đánh dấu $ = [
'#markup' => '1+2+3',
];
$plain_text = [
'#plain_text' => '1+2+3',
];
Lưu ý: không được hiển thị trong các mảng kết xuất ở trên là siêu dữ liệu bộ đệm (thẻ) cho các thực thể được tham chiếu trong trường.
Có, có nhiều cách khác để lấy các giá trị trường này và chuyển chúng tới drupal_view()
, tuy nhiên đó không phải là vấn đề của câu hỏi này. Tôi muốn sử dụng Trình định dạng trường để trả về một mảng kết xuất (tôi nghĩ rằng tôi phải trả về một mảng kết xuất) dẫn đến một chuỗi sẵn sàng được chuyển trực tiếp tới drupal_view()
. Điều này cho phép tôi định cấu hình định dạng của đối số trong giao diện người dùng mà không cần chạm vào mã. Tôi nghi ngờ điều này là không thể.
Một số phương pháp thay thế mà tôi đã xem xét:
- Tôi có thể xử lý trước đoạn văn của mình và thêm các chuỗi bộ lọc này vào
biến $
mảng.
- Tôi có thể xây dựng hàm twig của riêng mình để tạo các chuỗi bộ lọc theo ngữ cảnh này.
- Tôi có thể lấy các giá trị trực tiếp từ thực thể trong mẫu của mình, ví dụ:
đoạn.field_arg1.target_id
như Les Lim đã trả lời, nhưng điều này không hoạt động rõ ràng đối với các trường đa giá trị.
Chỉnh sửa: Có vẻ như điều này là không thể nên chấp nhận câu trả lời của Les Lim là giải pháp thay thế tốt nhất.