validasi informasi

This commit is contained in:
rahmagustin 2026-03-30 23:10:02 +07:00
parent 00b26280c2
commit 2cfc54f567
1 changed files with 49 additions and 27 deletions

View File

@ -6,17 +6,15 @@
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Models\Informasi; use App\Models\Informasi;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
class InformasiController extends Controller class InformasiController extends Controller
{ {
// Menampilkan semua informasi
public function index(Request $request) public function index(Request $request)
{ {
$search = $request->search; $search = $request->search;
$informasi = Informasi::when($search, function ($query) use ($search) { $informasi = Informasi::when($search, function ($query) use ($search) {
$query->where('judul', 'like', '%' . $search . '%'); $query->where('judul_informasi', 'like', '%' . $search . '%');
}) })
->orderBy('tanggal_informasi', 'desc') ->orderBy('tanggal_informasi', 'desc')
->paginate(10); ->paginate(10);
@ -24,27 +22,57 @@ public function index(Request $request)
return view('admin.informasi.index', compact('informasi')); return view('admin.informasi.index', compact('informasi'));
} }
// Form tambah informasi
public function create() public function create()
{ {
return view('admin.informasi.create'); return view('admin.informasi.create');
} }
// Simpan informasi baru // ================= VALIDASI =================
public function store(Request $request) private function rules()
{ {
$validator = Validator::make($request->all(), [ return [
'kategori_informasi' => 'required|in:berita,pengumuman', 'kategori_informasi' => 'required|in:berita,pengumuman',
'judul_informasi' => 'required|string|max:255', 'judul_informasi' => 'required|string|max:255',
'isi_informasi' => 'required|string', 'isi_informasi' => 'required|string|min:10',
'tanggal_informasi' => 'required|date', 'tanggal_informasi' => 'required|date',
'gambar_informasi' => 'nullable|image|mimes:jpeg,png,jpg,gif|max:2048', 'gambar_informasi' => 'nullable|image|mimes:jpeg,png,jpg|max:2048',
]); ];
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput();
} }
private function messages()
{
return [
'required' => ':attribute wajib diisi.',
'in' => ':attribute tidak valid.',
'string' => ':attribute harus berupa teks.',
'max' => ':attribute maksimal :max karakter.',
'min' => ':attribute minimal :min karakter.',
'date' => ':attribute harus berupa tanggal yang valid.',
'image' => ':attribute harus berupa gambar.',
'mimes' => ':attribute harus berformat jpeg, jpg, atau png.',
];
}
private function attributes()
{
return [
'kategori_informasi' => 'Kategori Informasi',
'judul_informasi' => 'Judul Informasi',
'isi_informasi' => 'Isi Informasi',
'tanggal_informasi' => 'Tanggal Informasi',
'gambar_informasi' => 'Gambar Informasi',
];
}
// ================= STORE =================
public function store(Request $request)
{
$request->validate(
$this->rules(),
$this->messages(),
$this->attributes()
);
$data = $request->only( $data = $request->only(
'kategori_informasi', 'kategori_informasi',
'judul_informasi', 'judul_informasi',
@ -63,29 +91,23 @@ public function store(Request $request)
->with('success', 'Informasi berhasil ditambahkan.'); ->with('success', 'Informasi berhasil ditambahkan.');
} }
// Form edit informasi // ================= EDIT =================
public function edit($id_informasi) public function edit($id_informasi)
{ {
$informasi = Informasi::findOrFail($id_informasi); $informasi = Informasi::findOrFail($id_informasi);
return view('admin.informasi.edit', compact('informasi')); return view('admin.informasi.edit', compact('informasi'));
} }
// Update informasi // ================= UPDATE =================
public function update(Request $request, $id_informasi) public function update(Request $request, $id_informasi)
{ {
$informasi = Informasi::findOrFail($id_informasi); $informasi = Informasi::findOrFail($id_informasi);
$validator = Validator::make($request->all(), [ $request->validate(
'kategori_informasi' => 'required|in:berita,pengumuman', $this->rules(),
'judul_informasi' => 'required|string|max:255', $this->messages(),
'isi_informasi' => 'required|string', $this->attributes()
'tanggal_informasi' => 'required|date', );
'gambar_informasi' => 'nullable|image|mimes:jpeg,png,jpg,gif|max:2048',
]);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput();
}
$data = $request->only( $data = $request->only(
'kategori_informasi', 'kategori_informasi',
@ -110,7 +132,7 @@ public function update(Request $request, $id_informasi)
->with('success', 'Informasi berhasil diperbarui.'); ->with('success', 'Informasi berhasil diperbarui.');
} }
// Hapus informasi // ================= DELETE =================
public function destroy($id_informasi) public function destroy($id_informasi)
{ {
$informasi = Informasi::findOrFail($id_informasi); $informasi = Informasi::findOrFail($id_informasi);