Twig là gì?

{{ 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

  • Rất khó để lấy các giá trị "thô" hoặc chỉ dữ liệu từ các biến Twig. Ví dụ về điều này bao gồm lấy
    {{ 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 Drupal

  • giải pháp đề xuất

    Đề xuất ban đầu là thêm bộ lọc

    {{ "Hey, how are you?\nJust fine."|nl2br }}{# outputs
    Hey, how are you?

    Just fine.
    #}
    0 và
    {{ "Hey, how are you?\nJust fine."|nl2br }}{# outputs
    Hey, how are you?

    Just fine.
    #}
    1 để 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

    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 }}{# outputs
    Hey, how are you?

    Just fine.
    #}
    2 sang biến khác, i. e.
    {{ "Hey, how are you?\nJust fine."|nl2br }}{# outputs
    Hey, how are you?

    Just fine.
    #}
    3 hoặc
    {{ "Hey, how are you?\nJust fine."|nl2br }}{# outputs
    Hey, how are you?

    Just fine.
    #}
    4. Đ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?\nJust fine."|nl2br }}{# outputs
    Hey, how are you?

    Just fine.
    #}
    2. Đ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?\nJust fine."|nl2br }}{# outputs
    Hey, how are you?

    Just fine.
    #}
    3 thành
    {{ "Hey, how are you?\nJust fine."|nl2br }}{# outputs
    Hey, how are you?

    Just fine.
    #}
    2

    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 }}{# outputs
    Hey, how are you?

    Just fine.
    #}
    9

    Đ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 }}{# outputs
    Hey, how are you?

    Just fine.
    #}
    2 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?\nJust fine."|nl2br }}{# outputs
    Hey, how are you?

    Just fine.
    #}
    3] được thay thế bằng thẻ HTML
    {{ "Hey, how are you?\nJust fine."|nl2br }}{# outputs
    Hey, how are you?

    Just fine.
    #}
    4

    {{ "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'] }}
    0

    7. đầ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'] }}
    1

    Giố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'] }}
    2

    8. 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'] }}
    3

    9. 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 }}{# outputs
    Hey, how are you?

    Just fine.
    #}
    0

    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

    Bộ lọc trong Twig là gì?

    Các bộ lọc trong Cành cây có thể được sử dụng để sửa đổi các biến . Các bộ lọc được phân tách khỏi biến bằng ký hiệu đường ống. Họ có thể có các đối số tùy chọn trong ngoặc đơn. Nhiều bộ lọc có thể được xâu chuỗi. Đầu ra của một bộ lọc được áp dụng cho bộ lọc tiếp theo.

    Spaceless trong Twig là gì?

    Bộ lọc không gian đã được thêm vào Twig 2. 7. Sử dụng bộ lọc không dấu cách để xóa khoảng trắng giữa các thẻ HTML, không xóa khoảng trắng trong thẻ HTML hoặc khoảng trắng trong văn bản thuần túy . 1 2 3 4 5 6 7 {{ " ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #} ". không gian }} {# đầu ra sẽ là #}

    Twig dựa trên cái gì?

    Twig là một công cụ mẫu cho ngôn ngữ lập trình PHP. Cú pháp của nó bắt nguồn từ các mẫu Jinja và Django . Đây là một sản phẩm nguồn mở được cấp phép theo Giấy phép BSD và được duy trì bởi Fabien Potencier.

    Cành cây dùng để làm gì?

    Twig là một công cụ mẫu hiện đại dành cho PHP . Linh hoạt. Twig được cung cấp bởi một trình phân tích cú pháp và từ vựng linh hoạt. Điều này cho phép nhà phát triển xác định các thẻ và bộ lọc tùy chỉnh của riêng mình và tạo DSL của riêng mình. as a template language for applications where users may modify the template design. Flexible: Twig is powered by a flexible lexer and parser. This allows the developer to define its own custom tags and filters, and create its own DSL.

    Chủ Đề