1. tambahkan ini di app servis provider
use Illuminate\Support\Facades\Session;
use Illuminate\Database\Eloquent\Builder;
// Mengambil data dari sidebar.view
view()->composer('*', function ($view) {
$sidebarSelection = Session::get('sidebarSelection', '');
$view->with('sidebarSelection', $sidebarSelection);
});
// Untuk Mempermudah Filter Global
Builder::macro('globalFilter', function ($value, $model) {
$userLogin = auth()->user();
if ($userLogin->level === 'superadmin') {
if (!empty($value)) {
return $this->where($model.'.sekolah_idsekolah', $value);
}
} else {
return $this->where($model.'.sekolah_idsekolah', $userLogin->sekolah_idsekolah);
}
return $this;
});
// Option Global Filter
function filterOption($id = null)
{
$result = Sekolah::get();
$options = '';
foreach ($result as $row) {
$options .= '<option value=' . $row->idsekolah . '';
$id = session('sidebarSelection');
if ($id == $row->idsekolah) {
$options .= ' selected';
}
$options .= '>' . $row->sekolah . '</option>';
}
return $options;
}
// membuat view Option untuk sidebar
view()->composer('assets.sidebar', function ($view) {
$globalFilterOptions = filterOption();
$view->with('globalFilterOptions', $globalFilterOptions);
});
2. tambahkan di sidebar blade
@if (auth()->user()->level == 'superadmin')
<li class="nav-title text-dark fw-medium" style="margin-top: 7px;">Global Filter</li>
<div>
<form id="sidebarForm" method="GET" action="{{ route('save.sidebar.selection') }}">
@csrf
<select class="form-select" name="selectedValue"
onchange="document.getElementById('sidebarForm').submit()">
<option value="" selected>-- Semua Data --</option>
{!! $globalFilterOptions !!}
</select>
</form>
</div>
@endif
3. web.php
// Menangkap data dari sidebar
Route::get('/save-sidebar-selection', function (Illuminate\Http\Request $request) {
$selectedValue = $request->query('selectedValue');
session(['sidebarSelection' => $selectedValue]);
// Redirect back to the previous page or any other page
return redirect()->back();
})->name('save.sidebar.selection');
4. penerapan di render massukkan di setiap variabel render :
Penjelasan:
parameter 1, diisi model , 2 diisi value dari select sidebar option
contoh:
->globalFilter('sekolah_idsekolah',session('sidebarSelection'))