/** * Handle filters * @param string $key * @return \Micro\Http\Response\RedirectResponse|array */ protected function handleFilters($key = 'filters', $clearParams = ['id' => \null, 'page' => \null, 'sort' => \null]) { $filters = $this->request->getParam($key); if ($this->request->isPost()) { $post = $this->request->getPost($key, []); if (isset($post['reset'])) { return new RedirectResponse(route(\null, [$key => \null] + $clearParams)); } if (isset($post['filter'])) { unset($post['filter']); foreach ($post as $k => $v) { if (is_object($v) || is_array($v) && empty($v) || \trim((string) $v) === '') { unset($post[$k]); } } return new RedirectResponse(route(\null, [$key => !empty($post) ? Utils::base64urlEncode(http_build_query($post)) : \null] + $clearParams)); } } if ($filters) { parse_str(Utils::base64urlDecode($filters, \true), $filters); if (empty($filters)) { $filters = []; } } else { $filters = []; } return $filters; }