add AdditionalRequest for improved validation and structure in AdditionalController
This commit is contained in:
parent
45969e0c77
commit
6ecc2a4ccd
|
|
@ -3,68 +3,24 @@
|
|||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Additional;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use App\Http\Requests\Admin\AdditionalRequest; // Gunakan FormRequest baru
|
||||
|
||||
class AdditionalController extends Controller
|
||||
{
|
||||
// Store: Simpan Data Baru
|
||||
public function store(Request $request)
|
||||
public function store(AdditionalRequest $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'nama' => 'required|string|min:3|max:100',
|
||||
'harga' => 'required|numeric|min:0',
|
||||
], [
|
||||
'required' => 'Kolom :attribute wajib diisi.',
|
||||
'numeric' => ':attribute harus berupa angka.',
|
||||
'string' => 'Input :attribute harus berupa teks valid.',
|
||||
'max' => ':attribute melebihi batas, maksimal :max karakter/KB.',
|
||||
'min' => ':attribute minimal harus :min karakter/nilai.',
|
||||
'numeric' => ':attribute harus berupa angka.',
|
||||
], [
|
||||
'nama' => 'nama additional',
|
||||
'harga' => 'harga additional',
|
||||
]);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()
|
||||
->withErrors($validator)
|
||||
->withInput()
|
||||
->with('error_modal', 'createAdd');
|
||||
}
|
||||
Additional::create($request->only(['nama', 'harga']));
|
||||
Additional::create($request->validated());
|
||||
return redirect()->back()->with('success', 'Additional berhasil ditambahkan!');
|
||||
}
|
||||
|
||||
// Update: Simpan Perubahan
|
||||
public function update(Request $request, string $id)
|
||||
public function update(AdditionalRequest $request, string $id)
|
||||
{
|
||||
$additional = Additional::findOrFail($id);
|
||||
$validator = Validator::make($request->all(), [
|
||||
'nama' => 'required|string|min:3|max:100',
|
||||
'harga' => 'required|numeric|min:0',
|
||||
], [
|
||||
'required' => 'Kolom :attribute wajib diisi.',
|
||||
'numeric' => ':attribute harus berupa angka.',
|
||||
'string' => 'Input :attribute harus berupa teks valid.',
|
||||
'max' => ':attribute melebihi batas, maksimal :max karakter/KB.',
|
||||
'min' => ':attribute minimal harus :min karakter/nilai.',
|
||||
'numeric' => ':attribute harus berupa angka.',
|
||||
], [
|
||||
'nama' => 'nama additional',
|
||||
'harga' => 'harga additional',
|
||||
]);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()
|
||||
->withErrors($validator)
|
||||
->withInput()
|
||||
->with('error_id_add', $id);
|
||||
}
|
||||
$additional->update($request->only(['nama', 'harga']));
|
||||
$additional->update($request->validated());
|
||||
return redirect()->back()->with('success', 'Additional berhasil diperbarui!');
|
||||
}
|
||||
|
||||
// Destroy: Hapus Data
|
||||
public function destroy(string $id)
|
||||
{
|
||||
$additional = Additional::findOrFail($id);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,60 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Requests\Admin;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Contracts\Validation\Validator;
|
||||
use Illuminate\Http\Exceptions\HttpResponseException;
|
||||
|
||||
class AdditionalRequest extends FormRequest
|
||||
{
|
||||
public function authorize(): bool
|
||||
{
|
||||
return true; // Izinkan akses request
|
||||
}
|
||||
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'nama' => 'required|string|min:3|max:100',
|
||||
'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.',
|
||||
'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);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue