Skip to content

Commit

Permalink
aplicando template na view
Browse files Browse the repository at this point in the history
  • Loading branch information
wagnerdevocelot committed Aug 11, 2020
1 parent 9f45b62 commit 2e5cf21
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 27 deletions.
5 changes: 0 additions & 5 deletions edit.html
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
<!-- Vamos criar um arquivo de modelo contendo o formulário HTML. Abra um novo arquivo denominado
edit.html e adicione as seguintes linhas: -->

<h1>Editando {{.Titulo}}</h1>

<form action="/save/{{.Titulo}}" method="POST">
<div><textarea name="body" rows="20" cols="80">{{printf "%s" .Corpo}}</textarea></div>
<div><input type="submit" value="Salvar"></div>
</form>

<!-- =======================================> volte para wiki.go -->
5 changes: 5 additions & 0 deletions view.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<h1>{{.Titulo}}</h1>

<p>[<a href="/edit/{{.Titulo}}">Editar</a>]</p>

<div>{{printf "%s" .Corpo}}</div>
29 changes: 7 additions & 22 deletions wiki.go
Original file line number Diff line number Diff line change
@@ -1,14 +1,6 @@
package main

import (
"fmt"

// O html/template package faz parte da biblioteca padrão do Go. Podemos usar html/template
// para manter o HTML em um arquivo separado, o que nos permite alterar o layout
// de nossa página de edição sem modificar o código Go.

// =======================================> Vá para o arquivo edit.html

"html/template"
"io/ioutil"
"log"
Expand Down Expand Up @@ -37,26 +29,19 @@ func carregaPagina(titulo string) (*Pagina, error) {
return &Pagina{Titulo: titulo, Corpo: corpo}, nil
}

// Já que estamos trabalhando com templates agora, vamos criar um template para o nosso viewHandler
// Verifique o arquiv view.html

// Modifique viewHandler de acordo:

// viewHandler escreve o titulo e corpo da pagina em html formatado
func viewHandler(escrever http.ResponseWriter, ler *http.Request) {
titulo := ler.URL.Path[len("/view/"):]
pagina, _ := carregaPagina(titulo)
fmt.Fprintf(escrever, "<h1>%s</h1><div>%s</div>", pagina.Titulo, pagina.Corpo)
template, _ := template.ParseFiles("view.html")
template.Execute(escrever, pagina)
}

// Modifique editHandler para usar o template, em vez do HTML hardcoded:

// A função template.ParseFiles lerá o conteúdo de edit.html e retornará um ponteiro *template.Template.

// O método template.Execute executa o template, escrevendo o HTML gerado no http.ResponseWriter.
// Os identificadores .Titulo e .Corpo lá no edit.html referem-se a Titulo e Corpo
// presentes aqui na struct Pagina.

// As diretivas de temlate são colocadas entre chaves duplas. A instrução printf "%s" .Corpo
// é uma chamada de função que tem .Corpo como uma string em vez de um fluxo de bytes como saída.
// O html/template package ajuda a garantir que apenas HTML seguro e com aparência correta seja
// gerado por ações de template.

// editHandler carrega um formulário de edição
func editHandler(escrever http.ResponseWriter, ler *http.Request) {
titulo := ler.URL.Path[len("/edit/"):]
Expand Down

0 comments on commit 2e5cf21

Please sign in to comment.