[英]Dynamic templates in Play Framework 2.0
Play 1.0
有TemplateLoader
用於在運行時生成模板。
在Play 2.0
有動態加載模板的解決方案嗎? 或者我可以以某種方式將其轉換為使用Eval
scala代碼?
例如:我想在數據庫中存儲一些模板,以便某些用戶可以編輯它們。
Play 2.0已經將模板編譯為對象方法,因此您不必“動態加載”它們!
考慮這個名為app/views/test.scala.html
簡單模板。
@(num:Long)
Your number is @num
它成為一個名為test
的views.html
的Scala方法。 使用以下代碼評估它:
val msg : String = views.html.test(23).toString()
您不必僅使用html視圖。 要將模板與字符串一起使用,請使用play.api.templates.Txt
派生類。 這是一個名為app/views/quick.scala.txt
的模板:
@(id:Long)Your id is @id
它成為一個方法views.txt.quick
並使用:
val msg2 : String = views.txt.quick(32).body
您可以在play.api.templates包的文檔中找到更多信息。
似乎相關代碼位於Play-2.0目錄下的framework/src/play/src/main/scala/system/ApplicationProvider.scala
中,特別是ReloadableApplication
類。 我不確定這種動態編譯如何適合你,因為你不想在請求模板時這樣做(它很慢)。 這意味着存儲在數據庫中並沒有多大意義:您不希望存儲模板源代碼,而是存儲已編譯的模板對象。
為了論證,如果您只是將模板寫入app/views
目錄,您可以讓Play在閑暇時編譯它們。 但是,請注意,因為它們可能無法在生產系統上編譯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.