我试图从PHP切换到GO,但我在一个点上卡住了,我请求你的帮助。我在数据库中有一个名为Menu的表。在这里,menuid等于0将成为主菜单。不等于0的值取决于所写的menuid。我想画它所依赖的子菜单,但我不能这样做,我卡住了。表>菜单
简体中文输出>不是一个接一个地添加子菜单,而是将每个子菜单作为单独的菜单并排添加。
我的PHP函数。
PHP输出(工作)
它不是一个接一个地添加子菜单,而是将它们中的每一个作为单独的菜单并排添加。我不知道该怎么做。
qoefvg9y1#
我解决了我的问题。我实现了一个像下面这样的结构。任何需要的人都可以从这里复制。
package main import ( "html/template" "log" "github.com/gofiber/fiber/v2" "gorm.io/driver/sqlite" "gorm.io/gorm" ) type MenuItem struct { gorm.Model Title string ParentID int URL string SubMenu []MenuItem `gorm:"-"` } var db *gorm.DB func main() { app := fiber.New() var err error db, err = gorm.Open(sqlite.Open("menu.db"), &gorm.Config{}) if err != nil { log.Fatal(err) } db.AutoMigrate(&MenuItem{}) app.Get("/", func(c *fiber.Ctx) error { menuItems := []MenuItem{} db.Where("parent_id = ?", 0).Find(&menuItems) for i := range menuItems { subMenuItems := []MenuItem{} db.Where("parent_id = ?", menuItems[i].ID).Find(&subMenuItems) menuItems[i].SubMenu = subMenuItems } return c.Render("index", fiber.Map{"MenuItems": menuItems}) }) app.Static("/static", "./static") app.Listen(":8080") }
HTML
<nav> <ul> {{ range $index, $item := .MenuItems }} <li><a href="{{ $item.URL }}">{{ $item.Title }}</a></li> {{ if $item.SubMenu }} <ul> {{ range $subIndex, $subItem := $item.SubMenu }} <li><a href="{{ $subItem.URL }}">{{ $subItem.Title }}</a></li> {{ end }} </ul> {{ end }} {{ end }} </ul> </nav>
1条答案
按热度按时间qoefvg9y1#
我解决了我的问题。
我实现了一个像下面这样的结构。任何需要的人都可以从这里复制。
HTML