Kyslik\ColumnSortable\SortableLink::render PHP Method

render() public static method

public static render ( array $parameters ) : string
$parameters array
return string
    public static function render(array $parameters)
    {
        list($sortColumn, $sortParameter, $title, $queryParameters) = self::parseParameters($parameters);
        $title = self::applyFormatting($title);
        $icon = Config::get('columnsortable.default_icon_set');
        foreach (Config::get('columnsortable.columns') as $value) {
            if (in_array($sortColumn, $value['rows'])) {
                $icon = $value['class'];
            }
        }
        if (Request::get('sort') == $sortParameter && in_array(Request::get('order'), ['asc', 'desc'])) {
            $icon .= Request::get('order') === 'asc' ? Config::get('columnsortable.asc_suffix', '-asc') : Config::get('columnsortable.desc_suffix', '-desc');
            $direction = Request::get('order') === 'desc' ? 'asc' : 'desc';
        } else {
            $icon = Config::get('columnsortable.sortable_icon');
            $direction = Config::get('columnsortable.default_direction_unsorted', 'asc');
        }
        $iconAndTextSeparator = Config::get('columnsortable.icon_text_separator', '');
        $clickableIcon = Config::get('columnsortable.clickable_icon', false);
        $trailingTag = $iconAndTextSeparator . '<i class="' . $icon . '"></i>' . '</a>';
        if ($clickableIcon === false) {
            $trailingTag = '</a>' . $iconAndTextSeparator . '<i class="' . $icon . '"></i>';
        }
        $anchorClass = self::getAnchorClass();
        $queryString = http_build_query(array_merge($queryParameters, array_filter(Request::except('sort', 'order', 'page')), ['sort' => $sortParameter, 'order' => $direction]));
        return '<a' . $anchorClass . ' href="' . url(Request::path() . '?' . $queryString) . '"' . '>' . htmlentities($title) . $trailingTag;
    }