fix: sosial-ekonomi nested route & controller view

This commit is contained in:
2026-07-03 16:26:34 +07:00
parent e9e598616e
commit 7cd32b1116
4 changed files with 36 additions and 18 deletions
@@ -42,25 +42,39 @@ class SosialEkonomiController extends Controller
));
}
public function index(Request $request): JsonResponse
{
$sosialEkonomi = SosialEkonomi::with([
'petani',
'pendapatanKomoditas',
'pendapatanLuarPertanian',
])
->when($request->search, function ($query, $search) {
$query->whereHas('petani', function ($petani) use ($search) {
$petani->where('nama', 'like', "%{$search}%");
});
})
->when($request->petani_id, fn ($query, $petaniId) => $query->where('petani_id', $petaniId))
->orderBy('created_at', 'desc')
->paginate($request->per_page ?? 10);
public function index(Request $request, Petani $petani)
{
$sosialEkonomi = SosialEkonomi::with([
'pendapatanKomoditas',
'pendapatanLuarPertanian',
])
->where('petani_id', $petani->id)
->first();
$komoditasPetani = collect();
$pendapatanKomoditasUtama = $sosialEkonomi?->pendapatanKomoditas
->where('kategori', 'utama') ?? collect();
$pendapatanKomoditasLainnya = $sosialEkonomi?->pendapatanKomoditas
->where('kategori', 'lainnya') ?? collect();
$pendapatanLuarPertanian = $sosialEkonomi?->pendapatanLuarPertanian ?? collect();
if ($request->expectsJson()) {
return response()->json($sosialEkonomi);
}
return view('produktivitas.petani.sosial-ekonomi.index', compact(
'petani',
'sosialEkonomi',
'komoditasPetani',
'pendapatanKomoditasUtama',
'pendapatanKomoditasLainnya',
'pendapatanLuarPertanian',
));
}
public function store(Request $request): JsonResponse|RedirectResponse
{
$validated = $this->validateData($request);
@@ -87,8 +87,8 @@
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{ route('petani.edit', $petani->id) }}">
<i class="icon-base ti tabler-user-check me-1_5 icon-sm"></i>Akses Pasar
<a class="nav-link {{ request()->routeIs('petani.akses-pasar.edit') ? 'active' : '' }}" href="{{ route('petani.akses-pasar.edit', $petani->id) }}">
<i class="icon-base ti tabler-building-store me-1_5 icon-sm"></i>Akses Pasar
</a>
</li>
</ul>
@@ -20,7 +20,7 @@
<div class="col-md-12">
@include('produktivitas.petani.header', ['petani' => $petani])
<form method="POST" action="{{ $sosialEkonomi ? route('sosial-ekonomi.update', $sosialEkonomi->id) : route('sosial-ekonomi.store') }}">
<form method="POST" action="{{ $sosialEkonomi ? route('petani.sosial-ekonomi.update', [$petani->id, $sosialEkonomi->id]) : route('petani.sosial-ekonomi.store', $petani->id) }}">
@csrf
@if($sosialEkonomi)
@method('PUT')
+4
View File
@@ -44,6 +44,7 @@ Route::middleware('auth')
Route::get('/hilirisasi', [App\Http\Controllers\Web\Dashboard\HilirisasiController::class, 'index'])->name('dashboard.hilirisasi');
Route::get('/konektivitas', [App\Http\Controllers\Web\Dashboard\KonektivitasController::class, 'index'])->name('dashboard.konektivitas');
Route::get('/akselerasi', [App\Http\Controllers\Web\Dashboard\AkselerasiController::class, 'index'])->name('dashboard.akselerasi');
Route::get('/distribusi', [App\Http\Controllers\Web\Dashboard\DistribusiController::class, 'index'])->name('dashboard.distribusi');
// User
Route::resource('users', App\Http\Controllers\Web\Konfigurasi\UserController::class);
@@ -187,6 +188,9 @@ Route::middleware('auth')
// Petani
Route::resource('petani', App\Http\Controllers\Web\Produktivitas\PetaniController::class);
Route::resource('sosial-ekonomi', App\Http\Controllers\Web\Produktivitas\SosialEkonomiController::class)->except(['create', 'edit']);
Route::get('petani/{petani}/akses-pasar', [App\Http\Controllers\Web\Produktivitas\AksesPasarController::class, 'editByPetani'])->name('petani.akses-pasar.edit');
Route::resource('akses-pasar', App\Http\Controllers\Web\Produktivitas\AksesPasarController::class)->except(['create', 'edit']);
Route::resource('petani.lahan-tanaman', App\Http\Controllers\Web\Produktivitas\PetaniLahanController::class);
Route::resource('petani.lahan-tanaman.tanaman', App\Http\Controllers\Web\Produktivitas\PetaniLahanTanamanController::class)->only(['show', 'update', 'destroy']);
Route::resource('petani.praktik-budidaya', App\Http\Controllers\Web\Produktivitas\PraktikBudidayaController::class);