99 lines
2.3 KiB
Go
99 lines
2.3 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"html/template"
|
|
"os"
|
|
"path/filepath"
|
|
)
|
|
|
|
func main() {
|
|
// 模拟渲染器的数据结构
|
|
tableName := "categories"
|
|
|
|
// 模拟模板数据
|
|
templateData := map[string]interface{}{
|
|
"Table": tableName,
|
|
"TableAlias": "分类",
|
|
"Columns": []interface{}{map[string]interface{}{"Name": "id", "Alias": "ID", "ShowInList": true}},
|
|
"Data": []interface{}{map[string]interface{}{"id": 1, "name": "测试"}},
|
|
"Total": 1,
|
|
"Page": 1,
|
|
"PerPage": 10,
|
|
"Pages": 1,
|
|
"Search": "",
|
|
"SortField": "",
|
|
"SortOrder": "asc",
|
|
"Tables": []interface{}{map[string]interface{}{"Alias": "categories"}},
|
|
"CurrentPath": "/",
|
|
"StartRecord": 1,
|
|
"EndRecord": 1,
|
|
"LastUpdate": "2025-08-07",
|
|
}
|
|
|
|
// 加载并测试模板
|
|
builtinPath, _ := filepath.Abs("./web/templates/builtin")
|
|
|
|
// 基础模板函数
|
|
funcs := template.FuncMap{
|
|
"dict": func(values ...interface{}) map[string]interface{} {
|
|
dict := make(map[string]interface{})
|
|
for i := 0; i < len(values); i += 2 {
|
|
if i+1 < len(values) {
|
|
key := fmt.Sprintf("%v", values[i])
|
|
dict[key] = values[i+1]
|
|
}
|
|
}
|
|
return dict
|
|
},
|
|
"add": func(a, b int) int { return a + b },
|
|
"sub": func(a, b int) int { return a - b },
|
|
"json": func(v interface{}) string {
|
|
return fmt.Sprintf("%v", v)
|
|
},
|
|
}
|
|
|
|
// 加载布局模板
|
|
layoutPath := filepath.Join(builtinPath, "layout.html")
|
|
listPath := filepath.Join(builtinPath, "list.html")
|
|
|
|
// 解析模板
|
|
tmpl := template.New("test").Funcs(funcs)
|
|
|
|
// 读取并解析布局
|
|
layoutContent, err := os.ReadFile(layoutPath)
|
|
if err != nil {
|
|
fmt.Printf("Error reading layout: %v\n", err)
|
|
return
|
|
}
|
|
|
|
// 读取并解析列表模板
|
|
listContent, err := os.ReadFile(listPath)
|
|
if err != nil {
|
|
fmt.Printf("Error reading list: %v\n", err)
|
|
return
|
|
}
|
|
|
|
// 解析模板内容
|
|
tmpl, err = tmpl.Parse(string(layoutContent))
|
|
if err != nil {
|
|
fmt.Printf("Error parsing layout: %v\n", err)
|
|
return
|
|
}
|
|
|
|
tmpl, err = tmpl.Parse(string(listContent))
|
|
if err != nil {
|
|
fmt.Printf("Error parsing list: %v\n", err)
|
|
return
|
|
}
|
|
|
|
// 测试渲染
|
|
fmt.Println("Testing template render...")
|
|
err = tmpl.ExecuteTemplate(os.Stdout, "layout", templateData)
|
|
if err != nil {
|
|
fmt.Printf("Error executing template: %v\n", err)
|
|
return
|
|
}
|
|
|
|
fmt.Println("\nTemplate render test completed successfully!")
|
|
} |