{{ name|default['No name defined'] }}
{{ person.age|default['Age is not defined'] }}
{{ person['age']|default['Age is not defined'] }}
5 là bộ lọc Twig để đánh dấu giá trị là "an toàn", có nghĩa là trong môi trường có bật thoát tự động, biến này sẽ không được thoát nếu {{ name|default['No name defined'] }}
{{ person.age|default['Age is not defined'] }}
{{ person['age']|default['Age is not defined'] }}
5 là bộ lọc cuối cùng được áp dụng cho nó{% autoescape %}
{{ var|raw }} {# var won't be escaped #}
{% endautoescape %}
Nguồn. cành cây
Điều này có vấn đề vì sau đó trình tạo trang web không thể ảnh hưởng đến vị trí của trường đó khi kéo các trường xung quanh bên dưới “quản lý hiển thị”. Điều này tạo ra một cảm giác sai lầm về tiện ích
{{ name|default['No name defined'] }}
{{ person.age|default['Age is not defined'] }}
{{ person['age']|default['Age is not defined'] }}
7 hoặc {{ name|default['No name defined'] }}
{{ person.age|default['Age is not defined'] }}
{{ person['age']|default['Age is not defined'] }}
8 của hình ảnh, lấy URL của trường liên kết hoặc lấy ID từ trường tham chiếu thực thểCác chủ đề thường giải quyết vấn đề này bằng cách sử dụng các mô-đun đóng góp như Twig Tweak, viết PHP trong các hàm tiền xử lý hoặc bằng cách đi sâu vào đối tượng
{{ name|default['No name defined'] }}
{{ person.age|default['Age is not defined'] }}
{{ person['age']|default['Age is not defined'] }}
9 trong Twig. Điều này có thể khó khăn và trong một số trường hợp nhất định không hoạt động bình thường với hệ thống quyền và bộ nhớ đệm của Drupalgiải pháp đề xuất
Đề xuất ban đầu là thêm bộ lọc
{{ "Hey, how are you?\nJust fine."|nl2br }}{# outputs0 và
Hey, how are you?
Just fine.
#}
{{ "Hey, how are you?\nJust fine."|nl2br }}{# outputs1 để truy cập giá trị trường và nhãn. Tuy nhiên, việc bỏ qua cấu hình bộ định dạng trường có thể được coi là một thói quen xấu vì nó phá vỡ Giao diện người dùng trường cho các phần không tuân thủ cấu hình bộ định dạng trường
Hey, how are you?
Just fine.
#}
Một giải pháp thay thế là giữ cấu hình trường chịu trách nhiệm định cấu hình này. Điều này có thể được thực hiện bằng cách giới thiệu hai thay đổi
Trạng thái mới cho các trường trong cấu hình trường cho phép di chuyển chúng từ biến
{{ "Hey, how are you?\nJust fine."|nl2br }}{# outputs2 sang biến khác, i. e.
Hey, how are you?
Just fine.
#}
{{ "Hey, how are you?\nJust fine."|nl2br }}{# outputs3 hoặc
Hey, how are you?
Just fine.
#}
{{ "Hey, how are you?\nJust fine."|nl2br }}{# outputs4. Điều này sẽ cho phép chỉ ra trong giao diện người dùng nếu một trường đang được hiển thị bên ngoài
Hey, how are you?
Just fine.
#}
{{ "Hey, how are you?\nJust fine."|nl2br }}{# outputs2. Điều này cũng có thể mang lại một số tính linh hoạt cho người xây dựng trang web vì người xây dựng trang web có thể chuyển trường trở lại từ
Hey, how are you?
Just fine.
#}
{{ "Hey, how are you?\nJust fine."|nl2br }}{# outputs3 thành
Hey, how are you?
Just fine.
#}
{{ "Hey, how are you?\nJust fine."|nl2br }}{# outputs2
Hey, how are you?
Just fine.
#}
Cung cấp các trình định dạng trường được thiết kế đặc biệt để hiển thị dữ liệu thô. Chúng sẽ chứa giá trị của trường theo cách có cấu trúc, tôi. e.
{{ name|default['No name defined'] }}
{{ person.age|default['Age is not defined'] }}
{{ person['age']|default['Age is not defined'] }}
72. Chúng tôi có khả năng biến điều này thành chuỗi để nếu điều này được hiển thị trong một mảng kết xuất, thì nó sẽ được coi là một chuỗi Vì vậy, bạn cần xuất một giá trị trường [tiêu đề thực thể, trường nội dung — hoặc thậm chí là trường tùy chỉnh], hoàn toàn thô
Bạn không muốn có bất kỳ đánh dấu HTML nào và bạn không muốn có bất kỳ khoảng trống không mong muốn nào xung quanh giá trị, có thể được kế thừa từ một trường. html. mẫu cành cây ở đâu đó trong chủ đề của bạn hoặc lõi Drupal
Tôi chắc rằng bạn đã thử nhiều giải pháp và cú pháp khác nhau, nhưng có một cú pháp chắc chắn luôn hoạt động hiệu quả
Tất nhiên, vì bạn đang sử dụng Drupal 8, nên bạn sẽ sử dụng Twig làm công cụ tạo khuôn mẫu của mình
Vì vậy, trong bất kỳ tệp mẫu nào bạn đang nhắm mục tiêu, chỉ cần sử dụng cú pháp sau
{{ "Hey, how are you?\nJust fine."|nl2br }}{# outputs9
Hey, how are you?
Just fine.
#}
Điều này sẽ hiển thị giá trị thô, loại bỏ mọi đánh dấu bổ sung hoặc khoảng trắng và sẽ hoạt động với hầu hết mọi trường — ngay cả các trường mặc định do lõi Drupal cung cấp, như trường tiêu đề và nội dung
Nếu bạn đã từng sử dụng Twig trước đây thì có thể bạn đã biết về các bộ lọc và rất có thể bạn sử dụng chúng khá thường xuyên. Các bộ lọc rất mạnh mẽ và cho phép bạn sửa đổi một biến một cách dễ dàng nhưng thanh lịch. Có rất nhiều bộ lọc có sẵn và có thể bạn chưa biết hết chúng
Đó chính xác là lý do tại sao chúng ta sẽ xem xét danh sách các bộ lọc này trong bài viết này. Nhưng trước khi chúng ta tiếp tục, tôi muốn bạn biết rằng bạn có thể thử với các bộ lọc này trên twigfiddle. com. Trang web này cung cấp một sân chơi trực tuyến nhỏ, nơi bạn có thể tìm hiểu về Twig. Điều này giúp bạn tránh được rắc rối khi thiết lập môi trường trên máy cục bộ của mình
Không chần chừ gì nữa, hãy đi thẳng vào 10 bộ lọc Twig mà bạn nên biết
1. mặc định
Bộ lọc mặc định trả về một giá trị mặc định đã chỉ định. Giá trị này sẽ được trả về nếu giá trị đó không được xác định hoặc trống, nếu không thì giá trị của biến sẽ được trả về. Bộ lọc này hoạt động trên các biến mà còn trên các đối tượng và mảng
{{ name|default['No name defined'] }}
{{ person.age|default['Age is not defined'] }}
{{ person['age']|default['Age is not defined'] }}
2. nl2br
{{ "Hey, how are you?\nJust fine."|nl2br }}{# outputs2 là viết tắt của new line to br, có nghĩa là bộ lọc này chèn các ngắt dòng HTML trước tất cả các dòng mới trong một chuỗi. Tất cả các dòng mới [
Hey, how are you?
Just fine.
#}
{{ "Hey, how are you?\nJust fine."|nl2br }}{# outputs3] được thay thế bằng thẻ HTML
Hey, how are you?
Just fine.
#}
{{ "Hey, how are you?\nJust fine."|nl2br }}{# outputs4
Hey, how are you?
Just fine.
#}
{{ "Hey, how are you?\nJust fine."|nl2br }}{# outputs
Hey, how are you?
Just fine.
#}
3. thô
Theo mặc định, mọi thứ trong Twig được thoát khi bật thoát tự động. Nếu bạn không muốn thoát khỏi một biến, bạn sẽ phải đánh dấu rõ ràng biến đó là an toàn, điều này bạn có thể thực hiện bằng cách sử dụng bộ lọc thô. Điều này chỉ hoạt động nếu bộ lọc thô là bộ lọc cuối cùng được áp dụng cho bộ lọc
Bộ lọc này có thể hữu ích khi bạn muốn kết xuất một biến có chứa HTML chẳng hạn. Trong trường hợp đó, bạn không muốn thoát khỏi biến mà muốn hiển thị nó như hiện tại
{{ data|raw }} {# The data variable won't be escaped #}
4. ngày tháng
Bộ lọc ngày định dạng một biến ngày thành một định dạng nhất định. Bạn có thể chuyển ở định dạng mong muốn làm tham số đầu tiên. Tham số thứ hai là tùy chọn và được sử dụng để chỉ định múi giờ
{{ updated_at|date["d/m/Y"] }}
{{ "now"|date["d/m/Y"] }}
{{ updated_at|date["d/m/Y", "Europe/Amsterdam"] }}
5. lô hàng
Bộ lọc hàng loạt chia một danh sách thành một danh sách các danh sách — mỗi danh sách con được gọi là một lô. Đối số đầu tiên chỉ định kích thước của một lô. Đối số thứ hai là một trình giữ chỗ được sử dụng để điền vào các mục còn thiếu
________số 8Đây là những gì nó sẽ trông giống như khi nó được kết xuất
John
Lisa
Frank
Ted
No name
No name
6. thay thế
Bộ lọc thay thế định dạng một chuỗi đã cho bằng cách thay thế các phần giữ chỗ. Bộ lọc thay thế có một tham số là một đối tượng. Khóa chỉ định những gì cần được thay thế và giá trị tương ứng chỉ định những gì nó cần được thay thế bằng
Lưu ý rằng việc sử dụng % làm dấu phân cách hoàn toàn theo quy ước và do đó là tùy chọn
{{ name|default['No name defined'] }}
{{ person.age|default['Age is not defined'] }}
{{ person['age']|default['Age is not defined'] }}
07. đầu tiên
Bộ lọc đầu tiên trả về phần tử đầu tiên của chuỗi, ánh xạ hoặc chuỗi
{{ name|default['No name defined'] }}
{{ person.age|default['Age is not defined'] }}
{{ person['age']|default['Age is not defined'] }}
1Giống như có bộ lọc đầu tiên thì cũng có bộ lọc cuối cùng
{{ name|default['No name defined'] }}
{{ person.age|default['Age is not defined'] }}
{{ person['age']|default['Age is not defined'] }}
28. không gian
Bộ lọc không gian loại bỏ khoảng trắng giữa các thẻ HTML. Lưu ý rằng nó không xóa khoảng trắng trong các thẻ HTML
Thẻ này có nghĩa là để tránh khoảng trắng thừa giữa các thẻ HTML để tránh lỗi kết xuất trình duyệt trong một số trường hợp. Nó không có nghĩa là giữ kích thước của HTML được tạo ở mức tối thiểu
{{ name|default['No name defined'] }}
{{ person.age|default['Age is not defined'] }}
{{ person['age']|default['Age is not defined'] }}
39. vòng
Bộ lọc tròn làm tròn một số đến một độ chính xác nhất định. Tham số đầu tiên là độ chính xác, với giá trị mặc định là 0. Tham số thứ hai là phương thức làm tròn mặc định là phổ biến. Các phương pháp làm tròn có thể khác là trần và sàn
{{ "Hey, how are you?\nJust fine."|nl2br }}{# outputs0
Hey, how are you?
Just fine.
#}
10. phím
Bộ lọc khóa trả về các khóa của một mảng rất hữu ích khi bạn muốn lặp lại các khóa của một mảng