@haschwalth Hey! I have demo of mine version you can go through and check its simple as it.
- app/Http/Controllers/DepartmentController.php
namespace App\Http\Controllers;
use App\Models\Department;
use App\Models\Subdepartment;
class DepartmentController extends Controller
{
public function index()
{
$departments = Department::all();
$subdepartments = Subdepartment::all();
return view('index', compact('departments', 'subdepartments'));
}
}
- index.blade.php
<!-- resources/views/index.blade.php -->
<!DOCTYPE html>
<html>
<head>
<title>Department and Subdepartment Dropdowns</title>
</head>
<body>
<h1>Select Department and Subdepartment</h1>
<label for="department">Department:</label>
<select id="department">
<option value="">Select Department</option>
@foreach ($departments as $department)
<option value="{{ $department->id }}">{{ $department->name }}</option>
@endforeach
</select>
<label for="subdepartment">Subdepartment:</label>
<select id="subdepartment" disabled>
<option value="">Select Subdepartment</option>
@foreach ($subdepartments as $subdepartment)
<option value="{{ $subdepartment->id }}">{{ $subdepartment->name }}</option>
@endforeach
</select>
<script>
document.addEventListener('DOMContentLoaded', function() {
const departmentDropdown = document.getElementById('department');
const subdepartmentDropdown = document.getElementById('subdepartment');
departmentDropdown.addEventListener('change', function() {
const selectedDepartmentId = this.value;
subdepartmentDropdown.innerHTML = '<option value="">Select Subdepartment</option>';
subdepartmentDropdown.disabled = true;
if (selectedDepartmentId !== '') {
const subdepartments = @json($subdepartments);
const filteredSubdepartments = subdepartments.filter(subdepartment => subdepartment.department_id == selectedDepartmentId);
for (const subdepartment of filteredSubdepartments) {
const option = document.createElement('option');
option.value = subdepartment.id;
option.textContent = subdepartment.name;
subdepartmentDropdown.appendChild(option);
}
subdepartmentDropdown.disabled = false;
}
});
});
</script>
</body>
</html>
@haschwalth Let me know your feedback after review.