W filtrowaniu treści – wybieramy z listy opcję – wybrane ID, nazwy przekazujemy jako parametery query string. Pozwala to na filtrowanie po wielu parametrach niezależnie.
let url = new URL(location.href); let onChangePostion = function(){ url.searchParams.delete('page'); // 1 strona var position_name = $(this).find(':selected').text().trim(); // Nazwa var position_id = $(this).val(); // id if(position_id) { url.searchParams.set('position_id', position_id); } else { url.searchParams.delete('position_id'); } location.href = url.toString(); return false; }; $("#filter-position").on('change', onChangePostion);
Kontroller
$position_id = $this->getRequest()->getQuery('position_id'); // Przekazano parametr - wybierz pasujące id oraz parent_id if($position_id) { $query = $query->innerJoinWith('Positions', function($q) use ($position_id) { return $q->where(['OR' => [ 'Positions.id' => $position_id, 'Positions.parent_id' => $position_id ] ]); }); };