{{-- ==================================================================================================== FILE : resources/views/anggota/uploadfoto.blade.php PEMBUAT : Joudie Posumah MODUL : Anggota - Upload Pas Foto TAHUN : 2026 FUNGSI FILE : - Menampilkan halaman upload pas foto anggota. - Menampilkan foto saat ini menggunakan route pasfoto.show (serve via Storage::disk('public')->response), untuk menghindari masalah akses langsung /storage/... yang bisa 403 Forbidden. - Menampilkan preview foto baru sebelum disimpan. - Menggunakan Bootstrap validation pattern (needs-validation + novalidate + was-validated). TERHUBUNG : - Route halaman: anggota.foto.edit - Route submit: anggota.foto.update - Route foto: pasfoto.show (GET /pasfoto/{filename}) ==================================================================================================== --}} @extends('layouts.dashboard') @section('title', 'Upload Foto Anggota') @section('page-title', 'Upload Foto Anggota') @section('content')
{{-- Header --}}

Upload Foto Anggota

Silakan upload pas foto terbaru untuk kartu anggota.
Kembali
{{-- Notifikasi --}} @if(session('success')) @endif @if(session('error')) @endif @if ($errors->any()) @endif {{-- Card utama --}}
{{ $anggota->nama_lengkap }}
NIK: {{ $anggota->nik }}
@csrf {{-- Info readonly --}}
{{-- Foto saat ini + preview --}}
{{-- Foto saat ini --}}
Foto saat ini
@php // Bikin URL foto yang konsisten: // 1) foto_render (kalau ada) // 2) route pasfoto.show dari basename($anggota->foto) $fotoSrc = null; if (!empty($anggota->foto_render)) { $fotoSrc = $anggota->foto_render; } elseif (!empty($anggota->foto)) { // kalau DB berisi "pasfoto/xxx.jpg" atau "xxx.jpg" atau pernah dobel, basename tetap ambil yang terakhir $filename = basename((string) $anggota->foto); $fotoSrc = route('pasfoto.show', ['filename' => $filename]); } @endphp @if(!empty($fotoSrc)) Foto {{ $anggota->nama_lengkap }}
Foto tidak dapat ditampilkan.
{{ $anggota->foto }}
{{ $anggota->foto }}
@else
Belum ada foto.
@endif
{{-- Preview foto baru --}}
Preview foto baru
Pilih file untuk melihat preview.
Preview foto baru
{{-- Input file --}}
Foto wajib dipilih (JPG/PNG, maksimal 2MB).
@error('foto')
{{ $message }}
@enderror
Format: JPG/PNG
Maksimal: 2MB
Ukuran ideal: 400×400px (persegi)
Catatan: Foto harus pas sebagai pas foto pada kartu anggota.
{{-- Tombol --}}
Batal
{{-- Footer note kecil --}}
Jika upload gagal, cek ukuran file dan pastikan format JPG/PNG.
@endsection @push('scripts') @endpush