- Create new division list and add pages - Implement form validation using zod and error handling - Add useFormErrors composable for form error management - Update division entry form with validation support - Add error styling in main.css
1.8 KiB
1.8 KiB
useFormErrors Composable
Composable untuk menangani form validation errors seperti Laravel. Mengkonversi ZodError menjadi format yang mudah digunakan di template.
Penggunaan
Basic Usage
// Di component parent (entry.vue)
const { errors, setFromZodError, clearErrors } = useFormErrors()
// Validasi dengan Zod
const result = schema.safeParse(data.value)
if (!result.success) {
setFromZodError(result.error)
return
}
Di Template
<!-- Pass errors ke form component -->
<AppDivisonEntryForm v-model="data" :errors="errors" />
Di Form Component
<script setup>
import type { FormErrors } from '~/composables/useFormErrors'
const props = defineProps<{
modelValue: any
errors?: FormErrors
}>()
</script>
<template>
<!-- Setiap Field harus memiliki id yang sesuai dengan field name -->
<Field id="name" :errors="errors">
<Input v-model="data.name" />
</Field>
</template>
API Reference
Methods
setFromZodError(zodError)- Set errors dari ZodErrorsetErrors(errors)- Set errors manualsetError(field, message)- Set error untuk field tertentuclearError(field)- Hapus error untuk field tertentuclearErrors()- Hapus semua errorshasError(field)- Cek apakah ada error untuk fieldgetError(field)- Ambil error message untuk field
Computed Properties
hasErrors- Boolean apakah ada errorerrorMessages- Array semua error messagesfirstError- Error pertama (untuk alert general)
Field Component
Field component akan otomatis menampilkan error jika:
- Field memiliki
idprop yang sesuai dengan field name - Field menerima
errorsprop - Ada error untuk field tersebut di dalam errors object
Error akan ditampilkan dengan class .field-error-info yang sudah di-style dengan warna merah.