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

اعتبارسنجی داده‌های فرم (Validating Form Data)

در این بخش، نحوه انجام بررسی‌های اعتبارسنجی (Validation Checks) روی داده‌های فرم (Form Data) را بررسی می‌کنیم. برای مثال، می‌خواهیم مطمئن شویم که فیلدهای ضروری (Required Fields) خالی نیستند و محدودیت‌های طول (Length Constraints) رعایت شده‌اند.

برای شروع، بیایید یک نوع خطا (Error Type) جدید برای نگهداری خطاهای اعتبارسنجی (Validation Errors) ایجاد کنیم:

File: cmd/web/validators.go
package main

import "strings"

// Define a new errors type, which we will use to hold the validation errors for
// a form. The name of the form field will be used as the key.
type errors map[string]string

// Implement an Add() method to add error messages for a given field to the map.
func (e errors) Add(field, message string) {
    e[field] = message
}

// Implement a Get() method to retrieve the first error message for a given
// field from the map.
func (e errors) Get(field string) string {
    return e[field]
}

// Define a new validator type which contains a map of validation errors for our
// form fields.
type validator struct {
    Errors errors
}

// Create a new validator instance with an empty errors map.
func newValidator() *validator {
    return &validator{Errors: make(errors)}
}

// Valid() returns true if the errors map doesn't contain any entries.
func (v *validator) Valid() bool {
    return len(v.Errors) == 0
}

// NotBlank() returns true if a value is not an empty string.
func (v *validator) NotBlank(value string) bool {
    return strings.TrimSpace(value) != ""
}

// MaxChars() returns true if a value contains no more than n characters.
func (v *validator) MaxChars(value string, n int) bool {
    return len(value) <= n
}

// PermittedInt() returns true if a value is in a list of permitted integers.
func (v *validator) PermittedInt(value int, permittedValues ...int) bool {
    for i := range permittedValues {
        if value == i {
            return true
        }
    }
    return false
}

واژه‌نامه اصطلاحات فنی

اصطلاح فارسی معادل انگلیسی توضیح
بررسی‌های اعتبارسنجی Validation Checks بررسی صحت و اعتبار داده‌های ورودی
داده‌های فرم Form Data اطلاعات وارد شده توسط کاربر در فرم
فیلدهای ضروری Required Fields فیلدهایی که باید حتماً پر شوند
محدودیت‌های طول Length Constraints محدودیت تعداد کاراکترهای مجاز
نوع خطا Error Type ساختار داده برای نگهداری خطاها
خطاهای اعتبارسنجی Validation Errors پیام‌های خطا در مورد داده‌های نامعتبر
نقشه خطاها Error Map ساختار داده برای ذخیره خطاها
اعتبارسنج Validator شیء مسئول بررسی اعتبار داده‌ها
بررسی خالی نبودن Not Blank Check بررسی پر بودن فیلد
مقادیر مجاز Permitted Values مقادیر قابل قبول برای یک فیلد