示例#1
0
 /**
  * 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;
 }