Skip to content

perbaiki modul arsip, jabatan, laporan penduduk, anggaran, dan epidemi penyakit#1582

Open
habibie11 wants to merge 24 commits into
rilis-devfrom
fix-bug-pengujian-1
Open

perbaiki modul arsip, jabatan, laporan penduduk, anggaran, dan epidemi penyakit#1582
habibie11 wants to merge 24 commits into
rilis-devfrom
fix-bug-pengujian-1

Conversation

@habibie11

Copy link
Copy Markdown
Contributor

Ringkasan

Commit ini memperbaiki sejumlah bug yang muncul setelah upgrade ke Laravel 13, meliputi error fatal pada routing, form yang tidak dapat disubmit, tombol yang tidak muncul, dan crash saat ekstraksi file ZIP.


Bug yang Diperbaiki

1. data/pengurus/arsip — Error: Missing required parameter pengurus_id

Penyebab: Tombol "Tambah Arsip" selalu dirender tanpa kondisi, sehingga memanggil route('data.pengurus.create.arsip', $pengurus_id) meskipun $pengurus_id belum tersedia (halaman daftar arsip tanpa konteks pengurus tertentu).

Perbaikan: resources/views/data/pengurus/arsip.blade.php

- @include('forms.btn-social', [
-     'create_url' => route('data.pengurus.create.arsip', $pengurus_id),
- ])
+ @if(!empty($pengurus_id))
+     @include('forms.btn-social', [
+         'create_url' => route('data.pengurus.create.arsip', $pengurus_id),
+     ])
+ @endif

2. data/jabatan/create — Error: Route data.jabatan.store not defined

Penyebab: Route POST jabatan (untuk getdata) konflik dengan route POST jabatan milik Route::resource('jabatan', ...). Di Laravel 13, route yang didaftarkan belakangan menimpa yang pertama, sehingga route data.jabatan.store dari resource hilang.

Perbaikan: routes/web.php

- Route::post('jabatan', ['as' => 'data.jabatan.getdata.post', ...]);
+ Route::post('jabatan/getdata', ['as' => 'data.jabatan.getdata.post', ...]);

3. data/laporan-penduduk — Tombol hapus tidak muncul & crash saat extract ZIP

3a. Tombol hapus tidak muncul

Penyebab: Nama permission yang digunakan di controller menggunakan format laporan-penduduk (dash), sedangkan yang terdefinisi di RoleSpatieSeeder menggunakan format laporan_penduduk (underscore). Akibatnya $user->can() selalu mengembalikan false.

Perbaikan: app/Http/Controllers/Data/LaporanPendudukController.php

- $data['delete_url'] = auth()->user()->can('access.data.laporan-penduduk.delete') ...
+ $data['delete_url'] = auth()->user()->can('access.data.laporan_penduduk.delete') ...

3b. Route download konflik (typo: tidak ada slash sebelum {id})

Penyebab: Route download{id} (tanpa /) terdaftar dengan nama yang sama dengan download/{id}, menyebabkan konflik route di Laravel 13.

Perbaikan: routes/web.php

- Route::get('download{id}', ['as' => 'data.laporan-penduduk.download', ...]);
+ Route::get('download/{id}', ['as' => 'data.laporan-penduduk.download', ...]);

3c. Crash ValueError: Invalid or uninitialized Zip object

Penyebab: ZipArchive::open() tidak melempar exception saat gagal membuka file ZIP. Nilai return-nya diabaikan, dan extractTo() dipanggil pada objek ZIP yang tidak terinisialisasi, menyebabkan ValueError.

Perbaikan: app/Http/Controllers/Data/LaporanPendudukController.php

- $zip->open($path);
+ $result = $zip->open($path);
+ if ($result !== true) {
+     throw new \RuntimeException("File ZIP tidak valid atau rusak. Kode error: {$result}");
+ }
  $zip->extractTo($extract);

4. data/anggaran-realisasi — Tombol import tidak bisa diklik

Penyebab: Method chaining ->acceptsFiles() tidak dilanjutkan dengan ->open(). Akibatnya tag <form> tidak pernah dibuka, dan semua elemen input serta tombol submit berada di luar form — tidak dapat mengirim data.

Perbaikan: resources/views/data/anggaran_realisasi/import.blade.php

  {!! html()->form()->route('data.anggaran-realisasi.do_import')->method('POST')
-     ->id('form-import')->class('form-horizontal
-                                form-label-left')->acceptsFiles() !!}
+     ->id('form-import')->class('form-horizontal form-label-left')
+     ->acceptsFiles()->open() !!}

5. data/anggaran-desa — Tombol import tidak bisa diklik

Penyebab: Sama seperti bug #4->open() tidak dipanggil setelah ->acceptsFiles().

Perbaikan: resources/views/data/anggaran_desa/import.blade.php

  {!! html()->form()->route('data.anggaran-desa.do_import')->method('POST')
-     ->id('form-import')->class('form-horizontal
-                                form-label-left')->acceptsFiles() !!}
+     ->id('form-import')->class('form-horizontal form-label-left')
+     ->acceptsFiles()->open() !!}

6. data/epidemi-penyakit/{id}/edit — Error 405 Method Not Allowed

Penyebab: Form edit epidemi penyakit menggunakan html()->form()->open() tanpa mendefinisikan route dan method, sehingga form submit ke URL yang sama dengan method GET/POST default, bukan ke route update dengan method PUT.

Perbaikan: resources/views/data/epidemi_penyakit/edit.blade.php

- {!! html()->form()->open() !!}
+ {!! html()->form()->route('data.epidemi-penyakit.update', $epidemi->id)->method('PUT')->open() !!}

7. data/laporan-apbdes — Route duplikat download{id}

Penyebab: Terdapat dua definisi route download untuk laporan APBDes — satu tanpa slash (download{id}) dan satu lagi dengan slash (download/{id}). Di Laravel 13, pendaftaran route ganda dengan nama yang sama menyebabkan route pertama ditimpa.

Perbaikan: routes/web.php

- Route::get('download{id}', ['as' => 'data.laporan-apbdes.download', ...]);
  Route::get('download/{id}', ['as' => 'data.laporan-apbdes.download', ...]);

Route download{id} (tanpa slash, yang salah) dihapus; route download/{id} yang benar dipertahankan.


File yang Diubah

File Perubahan
routes/web.php Fix konflik route jabatan getdata; fix typo route download{id} di laporan-penduduk dan laporan-apbdes
app/Http/Controllers/Data/LaporanPendudukController.php Fix permission underscore; tambah validasi ZipArchive::open()
resources/views/data/pengurus/arsip.blade.php Guard tombol create arsip dengan @if(!empty($pengurus_id))
resources/views/data/anggaran_realisasi/import.blade.php Tambah ->open() pada form builder
resources/views/data/anggaran_desa/import.blade.php Tambah ->open() pada form builder
resources/views/data/epidemi_penyakit/edit.blade.php Perbaiki form dengan route dan method PUT yang benar

Cara Menguji

  1. Buka http://127.0.0.1:8001/data/pengurus/arsip — pastikan tidak ada error, tombol Tambah hanya muncul jika konteks pengurus tersedia.
  2. Buka http://127.0.0.1:8001/data/jabatan/create — isi form dan submit, pastikan data tersimpan tanpa error route.
  3. Buka http://127.0.0.1:8001/data/laporan-penduduk — pastikan tombol hapus dan download muncul.
  4. Upload file ZIP via halaman import laporan penduduk — pastikan error ditampilkan dengan pesan yang jelas jika file tidak valid.
  5. Buka http://127.0.0.1:8001/data/anggaran-realisasi/import — klik tombol Impor dan pastikan form dapat disubmit.
  6. Buka http://127.0.0.1:8001/data/anggaran-desa/import — klik tombol Impor dan pastikan form dapat disubmit.
  7. Buka form edit epidemi penyakit — simpan perubahan dan pastikan tidak ada error 405.

@github-actions

Copy link
Copy Markdown

🔄 AI PR Review sedang antri di server...

Proses review akan segera dimulai di background — hasil akan muncul sebagai komentar setelah selesai.
Powered by CrewAI · PR #1582

Base automatically changed from upgrade-laravel-13 to rilis-dev June 14, 2026 06:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant