簡體   English   中英

Swift Vapor Leaf 在變量中提供 html

[英]Swift Vapor Leaf deliver html in a variable

我需要在 Swift Vapor App 中創建一個復雜的 html 表。

問題是:Leaf 似乎不支持像 #(somevar += 1) 這樣的變量計數,也不支持像 #(somevar1 + somevar2) 這樣的連接字符串變量

所以我決定在 App 中創建我的復雜表,並將其傳輸到變量內的 html 模板中。 (在php中我一直都習慣這樣做)

在模板中,我將變量稱為

#(table) 

但事實證明,當葉子轉義所有變量時,我得到了純 html 代碼。

但是有 #raw() 函數可以打印出普通的 html。

所以我願意

<!DOCTYPE html>
<html lang="de">
<head><title>Server</title></head>
<body>
<..>

<form action="parameters" method="post">

// here is the thing: leaf gets a html table within the string 'table'.
// If I do it like that lead doesn't recognize #(table) as a leaf variable.
#raw( #(table) )

<button type="submit">Save</button>
</form>


</body>
</html>

只是發現#raw() 不查找變量,而只是打印出未轉義的 {} 之間的內容。 所以我仍然進入網站“#(table)”而不是我復雜的 html-table。

所以現在我被困住了。 如何將 App 生成的 html 代碼作為 html 放入模板中?

可能我做錯了。 如何在葉子模板中獲取 html 代碼? 還是我必須自己發送整個頁面,作為帶有標題的http流......?

在此先感謝,湯姆

更新

從Vapor 3開始,在創建Vapor Leaf項目時,默認情況下未在--template=web嵌入#raw(<var>)標記。 我必須在configure.swift文件中手動注冊它:

/// Leaf add tags
services.register { container -> LeafTagConfig in
    var config = LeafTagConfig.default()
    config.use(Raw(), as: "raw")   // #raw(<myVar>) to print it as raw html in leaf vars
    return config
}

https://docs.vapor.codes/3.0/leaf/custom-tags/

此外,如果有人正在尋找可用標簽的完整列表,您可以在蒸汽依賴TagRenderer中輕松搜索TagRenderer ,如果您要創建自定義標簽,這是符合的協議:

可用標簽

希望這可以提供幫助

假設您沒有接受用戶輸入來創建此表,您應該能夠使用:

#raw(table)

這與#(table)的作用相同,但它不會轉義HTML,因此它將正確呈現。 如果您這樣做,請確保您不會讓自己容易受到XSS攻擊。

在蒸氣 4 中是:

#unsafeHTML(變量)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM