TIF_NGANJUK_E41220418/app/Http/Requests/Admin/BuketRequest.php

78 lines
2.8 KiB
PHP

<?php
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Http\Exceptions\HttpResponseException;
class BuketRequest extends FormRequest
{
public function authorize(): bool
{
// Ubah jadi true supaya request diizinkan
return true;
}
public function rules(): array
{
return [
//tmbah requirement
'nama' => 'required|string|min:3|max:100|regex:/^[a-zA-Z0-9\s\.,:"-]+$/',
'ukuran' => 'required|in:S,M,L',
'kategori' => 'required|in:single,fresh,premium_fresh,artificial',
'harga' => 'required|numeric|min:0',
'request_khusus' => 'required|string|min:3|max:100|regex:/^[a-zA-Z0-9\s\.,:"-]+$/',
'deskripsi' => 'required|string|min:3|min:100|regex:/^[a-zA-Z0-9\s\.,:"-]+$/',
'foto' => $this->isMethod('post')
? 'required|image|mimes:jpeg,png,jpg|max:2048'
: 'nullable|image|mimes:jpeg,png,jpg|max:2048',
];
}
public function messages(): array
{
return [
'required' => 'Kolom :attribute tidak boleh kosong.',
'string' => 'Input :attribute harus berupa teks valid.',
'min' => ':attribute terlalu pendek, minimal harus :min karakter.',
'max' => ':attribute melebihi batas, maksimal :max karakter/KB.',
'in' => 'Pilihan :attribute tidak sesuai dengan data yang tersedia.',
'numeric' => ':attribute harus berupa angka.',
'image' => ':attribute harus berupa file gambar (foto).',
'mimes' => 'Format :attribute tidak didukung. Gunakan format: jpeg, png, atau jpg.',
'foto.max' => 'Ukuran :attribute terlalu besar, maksimal adalah 2MB.',
];
}
public function attributes(): array
{
return [
'nama' => 'nama buket',
'ukuran' => 'ukuran buket',
'kategori' => 'kategori buket',
'harga' => 'harga',
'request_khusus' => 'request khusus',
'deskripsi' => 'deskripsi produk',
'foto' => 'foto produk',
];
}
/**
* Trik untuk Modal: Mengembalikan error ke modal yang tepat
*/
protected function failedValidation(Validator $validator)
{
$redirect = redirect()->back()->withErrors($validator)->withInput();
if ($this->isMethod('post')) {
$redirect->with('error_modal', 'create');
} else {
// Mengambil ID dari parameter route untuk modal edit
$redirect->with('error_id', $this->route('buket'));
}
throw new HttpResponseException($redirect);
}
}