Go言語のginのフレームワークを使ってMVCモデルでCRUD機能を作っているのですが、Viewで一覧表示などの画面のテンプレートを呼び出す際についての質問です。
例えばユーザー一覧の表示の場合はview/user/index.html
書籍一覧の表示の場合はview/book/index.html
のようにindex.htmlのファイル名でそれぞれuserとbookのディレクトリに分けたいです。
今の所書籍一覧を表示させるview/index.htmlの場合はテンプレートを呼び出して一覧表示させることができるのですが、ユーザー一覧表示と分けたいので、view/book/index.html配下に置いてコントローラー側からindex.htmlを呼び出したい場合どのように書いたら良いのでしょうか。
一覧表示させるデータはDBから取得出来ている前提です。
単純にBookListメソッドを以下のようにパスを指定するだけではだめでした。
go
1c.HTML(200, "/book/index.html", gin.H{"books": BookLists})
go
1package controllers 2 3import ( 4 "errors" 5 "fmt" 6 "gin_sample/model" 7 "gin_sample/service" 8 "html/template" 9 "log" 10 "net/http" 11 "strconv" 12 13 "github.com/gin-gonic/gin" 14 _ "github.com/go-sql-driver/mysql" 15 "github.com/go-xorm/xorm" 16) 17 18// DbEngine DB 19var DbEngine *xorm.Engine 20var tpl *template.Template 21 22//Book 書籍情報一覧 23type Book struct { 24 ID int `xorm:"pk autoincr int" form:"id" json:"id"` 25 Title string `json:"title" xorm:"'title'"` 26 Author string `json:"author" xorm:"'author'"` 27 Content string `json:"content" xorm:"'content'"` 28} 29 30//BookList 全件 31func BookList(c *gin.Context) { 32 bookService := service.BookService{} 33 BookLists := bookService.GetBookList() 34 c.HTML(200, "index.html", gin.H{"books": BookLists}) 35} 36 37
html
1 2<html> 3<h1>記事一覧</h1> 4<a href="new">新規作成</a><br> 5<table> 6<tr> 7 <th>ID</th> 8 <th>タイトル</th> 9 <th>著者名</th> 10 <th>内容</th> 11</tr> 12{{ range .books }} 13<form action="/book/edit/{{.ID}}" method="get"> 14 <input type="hidden" name="id" value="{{ .ID }}" /> 15 <tr> 16 <td>{{ .ID }}</td> 17 <td>{{ .Title }}</td> 18 <td>{{ .Author }}</td> 19 <td>{{ .Content }}</td> 20 <td><input type="submit" value="更新" /></td> 21 <td><a href="/book/delete/{{.ID}}">削除</a></td> 22 </tr> 23</form> 24{{end}} 25</table> 26</html>
go
1package router 2 3import ( 4 "gin_sample/controllers" 5 "net/http" 6 "github.com/gin-gonic/gin" 7) 8 9//GetRouter ルートを定義 10func GetRouter() *gin.Engine { 11 router := gin.Default() 12 router.LoadHTMLGlob("template/*.html") 13 book := router.Group("/book") 14 { 15 book.GET("/list", controllers.BookList) 16 book.GET("/new", func(c *gin.Context) { 17 c.HTML(200, "new.html", gin.H{}) 18 }) 19 book.POST("/add", controllers.BookAdd) 20 book.GET("/edit/:id", controllers.BookEdit) 21 book.POST("/update/:id", controllers.BookUpdate) 22 book.GET("/delete/:id", controllers.BookDelete) 23 } 24 25 return router 26}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。