Как установить переменную веб-шаблона для динамического кода html & golang? - PullRequest
0 голосов
/ 28 апреля 2019

У меня есть две веб-страницы на golang, и я хочу встроить коды этих страниц в переменную {{.content}} (определенную в templates / main.html) с динамической обработкой в ​​соответствии с поступающими запросами.

Например, если гость войдет на страницу регистрации пользователя, которую я хочу, в переменную {{.content}} войдут коды регистрации пользователя, иначе - коды пользовательских профилей.

templates / userregister.html Коды страниц;

{{ define "userregister" }}
   ...
   {{.specialmessage}}
   ...
{{ end }}

templates / userprofile.html Коды страниц;

{{ define "userprofile" }}
   ...
   {{.specialmessage}}
   ...
{{ end }}

шаблоны / main.html;

{{ define "main" }}
<!DOCTYPE html>
<html lang="tr">
    {{ template "head" . }}
    <body>
        <div class="container-fluid">
            {{ template "header" . }}
            <div class="row">
                <nav class="col-12 col-md-2 p-0">
                    {{ template "leftmenu" . }}
                </nav>
                <div class="container-fluid col-12 col-md-10">


                    {{.content}}


                </div>
            </div>
            {{ template "footer" . }}
        </div>
    </body>
</html>
{{ end }}

Контроллер страницы регистрации пользователя;

func PgUserRegister(c *gin.Context) {
    c.HTML(http.StatusOK,"main", gin.H{
        "pgETitle": "User Register page",
        "specialmessage": "You are on the userregister page.",

        "content": template.ParseFiles("userregister.html"),
    })
}

Контроллер страницы профиля пользователя;

func PgUserProfile(c *gin.Context) {
    c.HTML(http.StatusOK,"main", gin.H{
        "pgETitle": "User Profile",
        "specialmessage": "You are on the userprofile page.",

        "content": template.ParseFiles("userprofile.html"),
    })
}

1 Ответ

1 голос
/ 28 апреля 2019

Разбор всех шаблонов при запуске роутера.

router.LoadHTMLFiles("templates/main.html", "templates/userregister.html", "templates/userprofile.html")

Затем в вашем обработчике добавьте к выражению gin.H{ ... } логическую переменную, например, "isLoggedIn", а затем в основном шаблоне используйте действие if-else вместе с действием template.

{{ if .isLoggedIn }}
    {{ template "userprofile" . }}
{{ else }}
    {{ template "userregister" . }}
{{ end }}
...