2014-07-10 18 views
5

Tôi đang sử dụng Template::Toolkit và trong một vòng lặp for Tôi cố gắng để thay đổi múi giờ của một đối tượng:Template :: Toolkit không đánh giá biến như chuỗi

[%- FOR item IN c.user.items -%] 
    [% item.date.set_time_zone(c.user.timezone.name) %] 

    Date: [% item.date %] <br /> 
[% END %] 

Nó hoạt động và nó thay đổi múi giờ, nhưng hàm set_time_zone trả về đối tượng DateTime sau đó được đánh giá trên trang. Vì vậy, mỗi lần vòng lặp for chuỗi được đánh giá và đưa vào trang. Tôi biết rằng một số hệ thống templating khác có hai bộ thẻ, một trong đó nói rằng chỉ cần chạy mã này và một trong đó nói rằng đánh giá này và đặt nó trên trang. Liệu Template :: Toolkit có bất cứ điều gì như thế này? Tôi đã nhìn nhưng tôi dường như không thể tìm thấy bất cứ điều gì. Cách duy nhất tôi đã tìm thấy cho đến nay để không có chuỗi được đánh giá trên trang được đặt giá trị được trả về một biến:

[% var = item.date.set_time_zone(c.user.timezone.name) %] 

Có ai biết cách tốt hơn để làm điều này trong Mẫu :: Bộ công cụ?

Trả lời

9

Thử CALL chỉ:

[% CALL item.date.set_time_zone(c.user.timezone.name) %] 

Từ các tài liệu:

Chỉ thị CALL cũng tương tự như GET trong việc đánh giá các biến có tên, nhưng không in kết quả trả về. Điều này có thể hữu ích khi một biến được liên kết với một phương thức con hoặc phương thức đối tượng mà bạn muốn gọi nhưng không quan tâm đến giá trị được trả về.

+0

hoàn hảo! Cảm ơn :) – srchulo

Các vấn đề liên quan