2016-02-09 12 views
5

Chúng tôi đang sử dụng chất lỏng trong ứng dụng web. Tôi đã nhận thấy Shopify đã thực hiện một số bộ lọc hữu ích mà không được bao gồm theo mặc định trong đá quý lỏng. Ví dụ url_param_escapeCách thêm tất cả bộ lọc shopify vào chất lỏng tiêu chuẩn

Để kiểm tra nó tôi đã này:

$ IRB

require 'lỏng' lỏng :: Template.parse ('{{ "&" | url_param_escape}}') .render => "&"

Rõ ràng các bộ lọc này không được bao gồm theo mặc định. Chúng có sẵn ở đâu đó không? Nếu vậy, ở đâu và làm cách nào để thêm chúng vào trình phân tích cú pháp? Nếu không, t là một trường hợp thực hiện tất cả từng cái một hoặc tất cả chúng đều đến từ cùng một mô-đun hay cái gì đó?

+0

Dường như có sự cố với bộ lọc 'url_param_escape'. Tôi đã thử một số khác (loại bỏ, upcase, phụ thêm) và tất cả đều làm việc. Nhưng url param thoát không có gì. – Albin

+0

Cảm ơn bạn đã kiểm tra những Albin này, tất cả những người trong danh sách này đều hoạt động: https://github.com/Shopify/liquid/wiki/Liquid-for-Designers nhưng không phải tất cả những người được liệt kê ở đây: https: // docs. shopify.com/themes/liquid-documentation/filters/string-filters – Will

Trả lời

1

Bạn có thể/phải tự viết chúng. Chúng dễ tạo ra. Dưới đây là triển khai ví dụ về bộ lọc url_param_escape:

module MyApp 
    module Liquid 
    module Filters 
     module UrlParamFilter 
     def url_param_escape(thing_to_escape) 
      CGI.escape(thing_to_escape) 
     end 
     end 
    end 
    end 
end 

Sau đó, bạn cần đăng ký bộ lọc này để Liquid biết sử dụng bộ lọc này. Tôi thường làm điều này trong application.rb bên trong config.after_initialize nhưng có lẽ một nơi tốt hơn nó có thể đi nếu bạn có rất nhiều người trong số họ. Dưới đây là ví dụ về điều đó:

config.after_initialize do 
    ::Liquid::Template.register_filter(MyApp::Liquid::Filters::UrlParamFilter) 
end 
Các vấn đề liên quan