/** * @param FilterInterface $filter * @return TableBuilder */ public function addFilter(FilterInterface $filter) { if ($this->filter !== null) { $filter->combine($this->filter); } $this->filter = $filter; return $this; }
/** * @return RowInterface[] */ public function getRows() { return $this->filter->rowFilter($this->rows); }
/** * Helper method to render a FilterInterface to html. * * @param FilterInterface $filter * @return string */ public function visitFilter(FilterInterface $filter) { if ($filter instanceof DummyFilter) { $type = 'dummy'; } elseif ($filter instanceof SelectFilter) { $type = 'select'; } elseif ($filter instanceof SearchFilter) { $type = 'search'; } elseif ($filter instanceof SortFilter) { $type = 'sort'; } elseif ($filter instanceof PaginationFilter) { $type = "{$filter->getType()}-pagination"; } else { $type = 'dummy'; } $template = "filter/{$type}.twig"; return $this->loadTemplate($template)->render(["id" => $filter->getId(), "options" => $filter->getOptions()]); }