Làm thế nào để bạn gỡ lỗi một biến trong Twig?

Tìm hiểu về các phương pháp gỡ lỗi và kiểm tra mẫu Cành cây trong Craft CMS - chúng khác nhau như thế nào và bạn nên sử dụng mẫu nào

Mục lục

Craft cung cấp hai phương pháp để kiểm tra các mẫu Cành cây - hàm dump() và thẻ Cành cây dd. Ngoài ra còn có plugin Kint cung cấp chức năng kiểm tra biến nâng cao

dump() Chức năng nhánh

Hàm dump() trả về các giá trị của biến và đối tượng Twig nhưng không có bất kỳ định dạng nào. Để hiểu dữ liệu được trả về bởi dump(), bạn cần bọc nó trong thẻ HTML <pre>. Hầu hết các IDE có hỗ trợ Twig sẽ tự động đặt _______________ và _______________ nếu bạn sử dụng hoàn thành mã

Đây là cách các giá trị được trả về bởi dump() trông như thế nào khi không có <pre>

Làm thế nào để bạn gỡ lỗi một biến trong Twig?

dump() có thể nhận nhiều biến dưới dạng nhiều tham số chẳng hạn

    {{dump(variable1, variable2`)}}

Nếu bạn sử dụng dump() mà không có bất kỳ tham số nào, nó sẽ xuất ra tất cả các biến có sẵn. Tuy nhiên, làm điều này có thể sẽ khiến trang web đạt đến giới hạn bộ nhớ

Điều quan trọng cần nhớ là chức năng dump() chỉ khả dụng khi chế độ nhà phát triển được bật - sử dụng chức năng này khi chế độ nhà phát triển bị vô hiệu hóa sẽ gây ra lỗi

thẻ cành cây dd

Thẻ {%dd %} đã được giới thiệu trong Craft 3. 2. Nó hoạt động cho dù devmode có được bật hay không - đó là một lợi thế so với dump()

dd là viết tắt của "đổ và chết". Không giống như dump(), nó không kết hợp các giá trị được trả về với HTML của trang web - khi sử dụng dd, chỉ các giá trị được gỡ lỗi mới được hiển thị. Điều này làm cho nó thoải mái hơn khi sử dụng - với dump(), CSS của trang web đôi khi có thể gây rối với các giá trị được gỡ lỗi và khiến chúng khó hoặc không thể đọc được

Đây là ví dụ sử dụng của dd

{% dd variable %}

Như bạn có thể thấy, thẻ dd không yêu cầu chuyển biến vào trong ngoặc. Đây là cách các giá trị được trả về bởi dd trông như thế nào

Làm thế nào để bạn gỡ lỗi một biến trong Twig?

plugin Kint

Kint là một trình gỡ lỗi tương tác cho các ứng dụng PHP. Để sử dụng nó với Craft, bạn cần cài đặt plugin Kint

Kint cung cấp nhiều phương pháp gỡ lỗi khác nhau

  • xuất các biến vào thanh công cụ gỡ lỗi được thêm vào trang web HTML. Trong thanh công cụ này, bạn có thể duyệt các thuộc tính và mở rộng nội dung của chúng trong trường hợp các mảng hoặc đối tượng đa chiều - tất cả đều được định dạng và tương tác độc đáo
  • xuất các biến vào bảng điều khiển trình duyệt. Tôi thích phương pháp này nhất vì bảng điều khiển trình duyệt có thể được mở trong cửa sổ mới, tách biệt với nội dung trang web
  • dddump() tương đương

Đây là cách thanh công cụ gỡ lỗi kint trông như thế nào

Làm thế nào để bạn gỡ lỗi một biến trong Twig?

Phần kết luận

Vì vậy, bạn nên sử dụng phương pháp gỡ lỗi nào?

dd vượt trội hơn rất nhiều so với dump() - do đó tôi khuyên bạn nên sử dụng thẻ dd. Và nếu bạn thường xuyên cần xem qua các biến mẫu của mình, cài đặt Kint có thể là một lựa chọn tốt


THẺ

#cành cây

Nếu bạn muốn nhận các bản cập nhật mới nhất về hướng dẫn và thành phần Craft CMS, hãy theo dõi tôi trên Twitter hoặc đăng ký nguồn cấp dữ liệu RSS

Quan trọng. để sử dụng kint() trong tệp twig, bạn cần bật gỡ lỗi cho twig. Nếu bạn không gỡ lỗi bên trong tệp twig/template, bạn có thể bỏ qua phần này

Nếu bạn đã cài đặt Bảng điều khiển Drupal drupal site:mode dev, hãy nhớ đặt lại thành drupal site:mode prod khi quá trình phát triển của bạn hoàn tất

Nếu bạn không có Bảng điều khiển Drupal, hãy làm như sau

Bạn bật Twig Debugging trong sites/default/services.yml. (Nếu services.yml chưa tồn tại; sao chép default.services.yml và sao chép vào services.yml. )

Đặt biến gỡ lỗi thành true. Và xóa bộ nhớ cache

parameters:
  twig.config:
    debug: true

Nhớ chuyển debug về false sau khi bạn phát triển xong

Gỡ lỗi nguồn Các mẫu nhánh

Bây giờ hãy làm như sau để ngăn sự cố với Devel 8. x-2. 1, bỏ qua phần này nếu dùng Devel 4. 0. 1

Đối với người mới bắt đầu, bạn có thể gặp sự cố này khi thử kết xuất kint, đặc biệt nếu bạn chỉ thử
{{ kint() }} mà không chuyển bất kỳ tham số nào

Điều này là do mảng hoặc đối tượng quá lớn đối với tài nguyên máy chủ của bạn để xử lý cài đặt kint mặc định

Chỉnh sửa/mô-đun/devel/kint/kint/config. vỡ nợ. php và đặt composer require kint-php/kint0 thành số thấp hơn để giảm đệ quy và bộ nhớ cần thiết cho các biến kết xuất. Mặc định là 7, tôi đã đặt của tôi thành 4. Nếu 4 vẫn không hiệu quả với bạn, hãy tiếp tục giảm số

Ok, hãy sử dụng kint

Ghi chú. Nếu bạn đang cố gỡ lỗi khi đăng xuất, bạn sẽ cần cấp quyền truy cập thông tin kint cho vai trò người dùng ẩn danh

Ví dụ, trong các ý kiến. html. cành cây chúng tôi làm một composer require kint-php/kint1 và bạn sẽ thấy

Mẹo số 1 Đừng nhấp vào nút +, đó hoàn toàn là Ác ma

Nút + sẽ tự động mở từng con và con của chúng

Thay vào đó, hãy nhấp vào bất kỳ đâu trên thanh trừ nút +, chẳng hạn, nhấp vào đây

Hãy nhìn xem Kint của chúng ta gọn gàng thế nào

Ngoài ra, cách dễ nhất để nhận các giá trị biến được bảo vệ là gì

Nhận một giá trị

Hãy nói rằng chúng tôi quan tâm đến Người dùng. Vì vậy, hãy nhấp vào người dùng, nhưng một lần nữa, đừng nhấp vào nút +. Bạn sẽ thấy điều này

Làm cách nào để kết xuất các biến trong Twig?

Trong mẫu Twig, bạn có thể sử dụng tiện ích kết xuất làm chức năng hoặc thẻ. .
{% kết xuất foo. thanh %} là cách thực hiện khi đầu ra mẫu ban đầu sẽ không bị sửa đổi. các biến không được kết xuất nội tuyến, nhưng trong thanh công cụ gỡ lỗi web;
ngược lại, {{ dump(foo

Làm cách nào để in các biến trong Twig Drupal 9?

In các biến bằng Kint trong Twig . add {{ kint() }} into the template and pass a variable in, for example, {{ kint(page) }}.

Cú pháp Twig là 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ừ 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. Phiên bản ban đầu được tạo bởi Armin Ronacher.

Tôi có thể sử dụng PHP trong mẫu Twig không?

Symfony mặc định là Twig cho công cụ mẫu của nó, nhưng bạn vẫn có thể sử dụng mã PHP đơn giản nếu muốn . Cả hai công cụ tạo khuôn mẫu đều được hỗ trợ như nhau trong Symfony. Symfony thêm một số tính năng hay trên PHP để làm cho các mẫu viết bằng PHP mạnh mẽ hơn.