$this->request->getParam('controller'), 'action' => 'index', '?' => array_merge($filteringContext['filterCondition'], ['filteringLabel' => $filteringContext['label']]) ]; $currentQuery = $this->request->getQuery(); $filteringLabel = !empty($currentQuery['filteringLabel']) ? $currentQuery['filteringLabel'] : ''; unset($currentQuery['page'], $currentQuery['limit'], $currentQuery['sort'], $currentQuery['filteringLabel']); if (!empty($filteringContext['filterCondition'])) { // PHP replaces `.` by `_` when fetching the request parameter $currentFilteringContext = []; foreach ($filteringContext['filterCondition'] as $currentFilteringContextKey => $value) { $currentFilteringContextKey = str_replace('.', '_', $currentFilteringContextKey); $currentFilteringContextKey = str_replace(' ', '_', $currentFilteringContextKey); $currentFilteringContext[$currentFilteringContextKey] = $value; } } else { $currentFilteringContext = $filteringContext['filterCondition']; } $contextArray[] = [ 'active' => ( ( $currentQuery == $currentFilteringContext && // query conditions match !isset($filteringContext['filterConditionFunction']) && // not a custom filtering empty($filteringLabel) // do not check `All` by default ) || $filteringContext['label'] == $filteringLabel // labels should not be duplicated ), 'isFilter' => true, 'onClick' => 'changeIndexContext', 'onClickParams' => [ 'this', $this->Url->build($urlParams, [ 'escape' => false, // URL builder escape `&` when multiple ? arguments ]), "#table-container-${tableRandomValue}", "#table-container-${tableRandomValue} table.table", ], 'text' => $filteringContext['label'], 'class' => 'btn-sm' ]; } $dataGroup = [ 'type' => 'simple', 'children' => $contextArray, ]; if (isset($data['requirement'])) { $dataGroup['requirement'] = $data['requirement']; } echo '
'; echo $this->element('/genericElements/ListTopBar/group_simple', [ 'data' => $dataGroup, 'tableRandomValue' => $tableRandomValue ]); echo '
'; ?>