'required|string|min:3|max:100||regex:/^[a-zA-Z0-9\s\.,:"-]+$/', 'harga' => 'required|numeric|min:0', ]; } public function messages(): array { return [ 'required' => 'Kolom :attribute wajib diisi.', 'numeric' => ':attribute harus berupa angka.', 'string' => 'Input :attribute harus berupa teks valid.', 'regex' => ':attribute hanya boleh berisi huruf, angka, spasi, titik, koma, tanda hubung dan tanda petik dua.', 'min' => ':attribute minimal harus :min karakter/nilai.', 'max' => ':attribute melebihi batas maksimal :max karakter.', ]; } public function attributes(): array { return [ 'nama' => 'nama additional', 'harga' => 'harga additional', ]; } /** * Mengatur respon jika validasi gagal agar modal tidak tertutup. */ protected function failedValidation(Validator $validator) { $redirect = redirect()->back()->withErrors($validator)->withInput(); if ($this->isMethod('post')) { // Untuk modal tambah additional $redirect->with('error_modal', 'createAdd'); } else { // Untuk modal edit berdasarkan ID additional $redirect->with('error_id_add', $this->route('additional')); } throw new HttpResponseException($redirect); } }