Let's Go پردازش فرم‌ها › راه‌اندازی یک فرم HTML
قبلی · فهرست · بعدی
فصل ۷.۱.

راه‌اندازی یک فرم HTML

بیایید با ایجاد یک فایل جدید ui/html/pages/create.tmpl برای نگهداری HTML فرم شروع کنیم:

$ touch ui/html/pages/create.tmpl

… و سپس نشانه‌گذاری زیر را با استفاده از همان الگوهای قالب که قبلاً در کتاب استفاده کردیم، اضافه کنید.

File: ui/html/pages/create.tmpl
{{define "title"}}Create a New Snippet{{end}}

{{define "main"}}
<form action='/snippet/create' method='POST'>
    <div>
        <label>Title:</label>
        <input type='text' name='title'>
    </div>
    <div>
        <label>Content:</label>
        <textarea name='content'></textarea>
    </div>
    <div>
        <label>Delete in:</label>
        <input type='radio' name='expires' value='365' checked> One Year
        <input type='radio' name='expires' value='7'> One Week
        <input type='radio' name='expires' value='1'> One Day
    </div>
    <div>
        <input type='submit' value='Publish snippet'>
    </div>
</form>
{{end}}

تا اینجا چیز خاصی در این مورد وجود ندارد. قالب main ما شامل یک فرم HTML استاندارد است که سه مقدار فرم را ارسال می‌کند: title، content و expires (تعداد روزها تا انقضای اسنیپت). تنها چیزی که واقعاً باید به آن اشاره کنیم، ویژگی‌های action و method فرم است — این‌ها را طوری تنظیم کرده‌ایم که فرم هنگام ارسال، داده‌ها را به URL /snippet/create POST کند.

حالا بیایید یک لینک جدید 'ایجاد اسنیپت' به نوار ناوبری برنامه خود اضافه کنیم، تا با کلیک روی آن کاربر به این فرم جدید برود.

File: ui/html/partials/nav.tmpl
{{define "nav"}}
 <nav>
    <a href='/'>Home</a>
    <!-- Add a link to the new form -->
    <a href='/snippet/create'>Create snippet</a>
</nav>
{{end}}

و در نهایت، باید handler snippetCreate را به‌روزرسانی کنیم تا صفحه جدید ما را به این صورت رندر کند:

File: cmd/web/handlers.go
package main

...

func (app *application) snippetCreate(w http.ResponseWriter, r *http.Request) {
    data := app.newTemplateData(r)

    app.render(w, r, http.StatusOK, "create.tmpl", data)
}

...

در این مرحله می‌توانید برنامه را راه‌اندازی کنید و http://localhost:4000/snippet/create را در مرورگر خود بازدید کنید. باید یک فرم ببینید که به این صورت است:

07.01-01.png