Files
database_render/debug/debug_render.go
2025-08-07 20:03:53 +08:00

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!")
}