Включить шаблон из другого каталога - PullRequest
0 голосов
/ 11 мая 2018

В templates \ index.gohtml Я использую этот код:

{{template "header"}}
<h1>INDEX</h1>
{{template "nav"}}

<form action="/apply" method="post">
    <label for="firstname">First Name</label>
    <input type="text" name="firstname" id="firstname">
    <input type="submit">
</form>

Но я получаю сообщение об ошибке:

html / template:index.gohtml: 3: 11: нет такого шаблона "nav"

Полагаю, это потому, что nav определен в шаблонах \ includes \ nav.gohtml .Если это так, я не знаю, почему я не получаю ту же ошибку для header, поскольку она находится в том же каталоге.

мой main.go выглядит так:

func init() {
    tpl = template.Must(template.ParseGlob("templates/*.gohtml"))
}

func main() {
    http.HandleFunc("/", index)
}

func index(w http.ResponseWriter, r *http.Request) {
    err := tpl.ExecuteTemplate(w, "index.gohtml", nil)
    if err != nil {
        log.Println(err)
        http.Error(w, "Internal server error", http.StatusInternalServerError)
    }
}

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 11 мая 2018

Сейчас вы анализируете только файлы в папке шаблонов.
Если вы измените эту строку

tpl = template.Must(template.ParseGlob("templates/*.gohtml"))

к этому

tpl = template.Must(template.Must(template.ParseGlob("templates/*.gohtml")).ParseGlob("templates/includes/*.gohtml"))

он проанализирует файлы в папке шаблонов, затем проанализирует файлы в папке шаблонов / включает в себя их добавление в существующие проанализированные шаблоны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...