Form Doğrulaması — bu nədir, forma doğrulaması və Android-də tətbiqi

Müəllif: IT Sectr Dərc olunub: 2026-07-09 Oxuma vaxtı: 5 dəq

Form Validation — məlumatları serverə göndərməzdən əvvəl formanın bütün sahələrinin düzgünlüyünü yoxlama prosesidir. Ayrı-ayrı sahənin doğrulanmasından fərqli olaraq, Form Validation sahələr arasındakı qarşılıqlı əlaqələri nəzərə alır: şifrənin təsdiqi, bir sahənin digərindən asılılığı, şərti məcburilik. Google Developers, 2026 məlumatına görə, Form Validation göndərmə zamanı formanı tamamilə yoxlamalı və istifadəçiyə bütün səhvlərin xülasəsini təqdim etməlidir. Düzgün forma doğrulaması qeydiyyat konversiyasını 25-35% artırır və daxiletmə zamanı səhvlərin sayını azaldır.

Əsas məqamlar

  • Form Validation — məlumatları göndərməzdən əvvəl bütün sahələrin və onların qarşılıqlı əlaqələrinin kompleks yoxlanılması.
  • Sahənin doğrulanması bir sahəni müstəqil yoxlayır, formanın doğrulanması isə bütün sahələri birlikdə yoxlayır.
  • Göndərmə düyməsinin idarə edilməsi — ən azı bir sahə etibarsız olduqda düymə qeyri-aktiv olmalıdır.
  • Doğrulama kitabxanaları Saripaar və RxBinding kimi kitabxanalar onlarla sahəsi olan formanın yoxlanılmasını asanlaşdırır.
  • Göndərmə zamanı doğrulama — sahələr real vaxtda yoxlansa belə, məcburi mərhələdir.

Android-də forma doğrulaması nədir?

Form Validation — istifadəçinin formaya daxil etdiyi bütün məlumatların serverə göndərilməzdən əvvəl biznes tələblərinə uyğun olmasını təmin edən prosesdir. Forma doğrulaması hər bir sahənin ayrıca yoxlanılmasını, həmçinin çarpaz yoxlamaları əhatə edir: şifrənin təsdiqlə uyğunluğu, ən azı bir checkboxın seçilib-seçilməməsi, bütün məcburi sahələrin doldurulması, tarixin düzgünlüyü (məsələn, doğum tarixi gələcəkdə olmamalıdır).

Sadə sahə doğrulamasından fərq ondadır ki, Form Validation formanı vahid bir bütöv kimi idarə edir. Şərti sahə doldurulmadıqda göndərməni bloklaya və ya dialoq pəncərəsində səhvlərin xülasəsini göstərə bilər. Mürəkkəb formalarda (qeydiyyat, sifariş vermə, anket) forma doğrulaması UI-dan asılı olmayaraq test edilən ayrıca məntiq qatıdır.

NN Group UX tədqiqatlarına görə, istifadəçilər hər bir sahədən sonra ayrı-ayrılıqda deyil, səhvləri göndərmədən dərhal sonra gördükdə formanı doldurmağı 3 dəfə daha tez başa çatdırırlar. Bununla belə, ən yaxşı nəticə kombinasiya verir: sadə sahələrin ani doğrulaması (uzunluq, format) + çarpaz sahələr və biznes məntiqi üçün göndərmə zamanı tam yoxlama.

Sahənin doğrulanması ilə formanın doğrulanması arasındakı fərqlər

Sahənin doğrulanması suala cavab verir: bu konkret sahədə daxiletmə düzgündürmü? Email user@domain.com formatındadır, telefon rəqəmlərdən ibarətdir, şifrə 6 simvoldan uzundur. Sahənin doğrulanması təcrid olunmuşdur — digər sahələrdən asılı deyil və real vaxtda yerinə yetirilə bilər. Nəticə: konkret sahə üçün səhv və ya onun olmaması.

Formanın doğrulanması suala cavab verir: formanı tamamilə göndərmək olarmı? O, təkcə hər bir sahəni deyil, həm də onların kombinasiyalarını nəzərə alır: şifrə və təsdiq uyğun olmalıdır, başlama tarixi bitmə tarixindən gec ola bilməz, sahələrin cəmi 100% olmalıdır. Formanın doğrulanması göndərmə zamanı yerinə yetirilir və ümumi nəticə qaytarır: forma etibarlıdır və ya yox.

Arxitektura baxımından sahənin doğrulanması UI qatında (fraqment, ViewModel), formanın doğrulanması isə domain qatında (use case, interactor) yerləşdirilir. Bu, forma doğrulamasını müxtəlif UI komponentlərində təkrar istifadə etməyə və onu emulyator olmadan test etməyə imkan verir. Clean Architecture-da forma doğrulaması biznes qaydasıdır, UI məntiqi deyil.

MeyarSahənin doğrulanmasıFormanın doğrulanması
Yoxlama obyektiBir sahəBütün sahələr + onların qarşılıqlı əlaqələri
Yerinə yetirmə vaxtıReal vaxtda / fokus itirildikdəForma göndərildikdə
NəticəKonkret sahənin səhviFormanın ümumi statusu + səhvlərin siyahısı
Arxitektura qatıUI qatıDomain qatı

Forma doğrulamasına yanaşmalar

Form Validation üçün iki əsas yanaşma mövcuddur. Birincisi — imperativ: proqramçı ardıcıl olaraq hər sahəni yoxlayan və səhvlərin siyahısını toplayan funksiya yazır. Bu yanaşma başa düşmək üçün sadədir, lakin kod hər yeni sahə ilə böyüyür. 5 sahəsi olan forma üçün imperativ yanaşma hələ əlverişlidir, 15 sahə üçün — artıq problemlidir.

İkinci yanaşma — deklarativ: doğrulama qaydaları annotasiyalar və ya konfiqurasiya ilə təsvir olunur. Kitabxana özü bütün sahələri gəzir, qaydaları tətbiq edir və nəticə qaytarır. Nümunə: emailData sahəsi üzərində @Email annotasiyası, təsdiq sahəsi üzərində @ConfirmPassword. Deklarativ yanaşma doğrulama kodunu 3-5 dəfə qısaldır və onu oxunaqlı edir.

Üçüncü yanaşma — reaktiv RxJava və ya Kotlin Flow istifadə etməklə. Hər bir sahə Observable və ya StateFlow kimi təqdim olunur. Forma doğrulaması bütün sahələrin dəyişikliklərinə abunə olur və hər dəyişiklikdə ümumi vəziyyəti yenidən hesablayır. Bütün sahələr etibarlı olduqda göndərmə düyməsi avtomatik aktivləşir. Bu yanaşma reaktiv proqramlaşdırmanı başa düşməyi tələb edir, lakin ən hamar UX təmin edir.

Qeydiyyat formasının doğrulanması nümunəsi

Qeydiyyat formasını üç sahə ilə nəzərdən keçirək: email, şifrə və şifrənin təsdiqi. Forma doğrulaması daxildir: emailin Patterns.EMAIL_ADDRESS vasitəsilə yoxlanılması, şifrənin minimum 8 simvol uzunluğunda və rəqəm olmasının yoxlanılması, şifrə və təsdiqin uyğunluğunun yoxlanılması. Yalnız hər üç yoxlama keçdikdə formanı göndərmək olar.

kotlin
data class RegistrationForm(
    val email: String,
    val password: String,
    val confirmPassword: String
)

fun validateRegistration(form: RegistrationForm): ValidationResult {
    if (!Patterns.EMAIL_ADDRESS.matcher(form.email).matches())
        return ValidationResult(false, "Invalid email address")
    if (form.password.length < 8)
        return ValidationResult(false, "Password too short")
    if (form.password != form.confirmPassword)
        return ValidationResult(false, "Passwords do not match")
    return ValidationResult(true)
}

Nümunədə validateRegistration formanın data classını qəbul edir və ValidationResult qaytarır. Ən azı bir yoxlama keçməzsə, müvafiq mesajla false qaytarılır. Göndərmə düyməsinin idarə edilməsi Result əsasında qurulur: əgər isValid = true, düymə aktivdir. Real vaxtda vəziyyəti yeniləmək üçün LiveData<ValidationResult> istifadə edə və hər hansı sahə dəyişdikdə düyməni yeniləyə bilərsiniz.

Kotlin Flow ilə reaktiv yanaşma formanın vəziyyətini avtomatik yenidən hesablamağa imkan verir. Hər bir sahə MutableStateFlow<String> kimi təqdim olunur, combine isə onları bir Flow<ValidationResult> birləşdirir. UI-də abunəlik göndərmə düyməsini əl ilə doğrulama çağırmadan yeniləyir. Bu nümunə Google tərəfindən Jetpack Compose və MVVM arxitekturası üçün tövsiyə olunur.

Formaların doğrulanması üçün kitabxanalar

Android Saripaar — Android üçün ən populyar doğrulama kitabxanası. Sahələri və View-ları birbaşa annotasiya etməyə imkan verir: @Email, @NotEmpty, @Password(min = 8, scheme = Password.Scheme.ALPHA_NUMERIC). Doğrulama bir sətirlə validator.validate() callback ilə çağrılır. Saripaar avtomatik olaraq EditText-də setError vasitəsilə səhv təyin edir. Kitabxana spesifik biznes qaydaları üçün fərdi annotasiyaları da dəstəkləyir.

RxBinding + RxJava — ayrıca doğrulama kitabxanası olmadan reaktiv yanaşma. Hər bir sahə dəyişiklikləri RxTextView.textChanges() vasitəsilə yayımlayır. combineLatest operatoru bütün sahələri birləşdirir və ümumi statusu hesablayır. Üstünlük: doğrulama pipeline-ı üzərində tam nəzarət, debounce, throttle, filter əlavə etmək imkanı. Çatışmazlıq: RxJava bilikləri tələb olunur.

Material Design Components — TextInputLayout və TextInputEditText üçün daxili dəstək. Kitabxana doğrulamanın özünü təmin etmir, lakin səhvləri göstərmək üçün UI verir: setError(), setHelperText(), setCounterEnabled(). Doğrulamanın özü üçün hələ də əl ilə məntiq və ya Saripaar lazımdır. Material Components yoxlama üçün deyil, göstərmə üçün cavabdehdir.

Forma doğrulamasında tipik səhvlər

Birinci səhv — yalnız müştəri tərəfində doğrulama. Müştəri tərəfində Form Validation UX üçün nəzərdə tutulub, təhlükəsizlik üçün deyil. Təcavüzkar doğrulamanı keçərək birbaşa API-ə sorğu göndərə bilər. Server bütün sahələri təkrar yoxlamalıdır. Müştəri doğrulaması yeganə müdafiə olmamalıdır — bu istifadəçi rahatlığı üçün əlavə qatdır, məlumat təhlükəsizliyi üçün deyil.

İkinci səhv — mesajlar olmadan göndərmə düyməsini bloklamaq. Düymə qeyri-aktivdirsə, istifadəçi hansı sahələri düzəltməli olduğunu görməlidir. İzahsız boz düymə — formaların aşağı konversiyasının ən tez-tez rast gəlinən səbəblərindən biridir. Düymə bloklanmış olsa belə, həmişə sahə səhvlərini onların yanında göstərin. İstifadəçi göndərməyə nəyin mane olduğunu başa düşməlidir.

Üçüncü səhv — çarpaz sahələrə məhəl qoymamaq. Hər bir sahənin ayrıca doğrulanması kifayət deyil. Sahələr bir-birindən asılı ola bilər: şifrə və təsdiq, başlama və bitmə tarixi, ölkə və şəhər. Form Validation bu qarşılıqlı əlaqələri yoxlamalıdır. Yalnız ayrı-ayrı sahələrin yoxlanılması yalançı təhlükəsizlik hissi yaradır — forma uyğunsuz məlumatlarla göndərilə bilər.

SəhvNəticəHəll
Yalnız müştəri doğrulamasıTəhlükəsizlik zəifliyiMəcburi server yoxlaması
Mesajlar olmadan düyməFormanın aşağı konversiyasıSahə səhvlərini göstərmək
Çarpaz yoxlamaların olmamasıUyğunsuz məlumatlarSahə qarşılıqlı əlaqələrinin doğrulanması
Çox tez-tez yoxlamalarİstifadəçinin qıcıqlanmasıDebounce və fokus itirildikdə yoxlama

Tez-tez soruşulan suallar

Form Validation sahənin doğrulanmasından nə ilə fərqlənir?

Sahənin doğrulanması bir dəyəri format və ya uzunluq baxımından yoxlayır. Form Validation bütün sahələri birlikdə yoxlayır, çarpaz yoxlamalar daxil olmaqla: şifrələrin uyğunluğu, sahələrin bir-birindən asılılığı. Sahənin doğrulanması UI qatında, Form Validation isə domain qatında biznes qaydası kimi yerinə yetirilir.

Forma göndərmə düyməsini necə idarə etmək olar?

Reaktiv yanaşma istifadə edin: bütün sahələri bir Flow və ya Observable-da birləşdirin və dəyişikliklərə abunə olun. Hər hansı sahə dəyişdikdə formanın ümumi statusunu yenidən hesablayın. Status etibarlıdırsa — düymə aktivdir. Avtomatik yeniləmə üçün Kotlin Flow ilə combine və ya RxJava ilə combineLatest istifadə edin.

Android üçün hansı doğrulama kitabxanası daha yaxşıdır?

Android Saripaar — annotasiyalarla deklarativ doğrulama üçün ən yaxşı seçimdir. Layihə RxJava istifadə edirsə — RxBinding ayrıca kitabxana olmadan reaktiv yanaşma təmin edir. Sadə formalar üçün xarici asılılıqlar olmadan Patterns və TextUtils ilə əl ilə doğrulama kifayətdir.

Müştəri doğrulaması varsa, serverdə doğrulama lazımdırmı?

Mütləq. Müştəri doğrulaması UX-i yaxşılaşdırır, lakin təhlükəsizliyi təmin etmir. Server bütün məlumatları təkrar yoxlamalıdır, çünki API birbaşa əlçatandır. Yanlış və ya zərərli məlumatlardan qorunmaq üçün heç vaxt yalnız müştəri doğrulamasına etibar etməyin.

Jetpack Compose-da formanı necə doğrulamaq olar?

Jetpack Compose-da hər bir sahənin vəziyyətini saxlamaq üçün Kotlin Flow və ya StateFlow istifadə edin. Doğrulama funksiyası formanın vəziyyətini qəbul edir və ValidationResult qaytarır. Göndərmə düyməsi ümumi statusa abunə olur. Səhvləri göstərmək üçün OutlinedTextField və ya TextField Compose-da isError istifadə edin.

Xülasə

  • Form Validation — məlumatları göndərməzdən əvvəl formanın bütün sahələrinin və onların qarşılıqlı əlaqələrinin kompleks yoxlanılması.
  • Sahənin doğrulanması təcrid olunub və UI-də yerinə yetirilir; formanın doğrulanması çarpaz asılılıqları nəzərə alır və domain qatına aiddir.
  • Göndərmə düyməsi etibarsız formada qeyri-aktiv olmalıdır — sahə səhvlərinin məcburi göstərilməsi ilə.
  • Android Saripaar — annotasiyalarla deklarativ doğrulama üçün əsas kitabxana.
  • RxBinding/Flow — hər hansı sahə dəyişdikdə forma statusunun avtomatik yenidən hesablanması üçün reaktiv yanaşma.
  • Server doğrulaması təhlükəsizlik qatı kimi məcburidir, müştəri doğrulaması yalnız UX üçündür.
  • Çarpaz yoxlamalar — Form Validation-ın məcburi elementidir, onlar olmadan forma uyğunsuz məlumatlar göndərə bilər.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun