sortName = $sortName; $this->columnName = $columnName; $this->cast = $cast; } /** * Determine if this column is currently sorted. * * @return bool */ protected function isSorted() { $this->sort = app('request')->get($this->sortName); if (empty($this->sort)) { return false; } return isset($this->sort['column']) && $this->sort['column'] == $this->columnName; } /** * @return string */ public function render() { $type = 'desc'; $icon = 'up'; $active = ''; if ($this->isSorted()) { $type = $this->sort['type'] == 'desc' ? 'asc' : 'desc'; $active = 'active'; if ($this->sort['type'] === 'asc') { $icon = 'down'; } } $sort = ['column' => $this->columnName, 'type' => $type]; if ($this->cast) { $sort['cast'] = $this->cast; } if (! $this->isSorted() || $this->sort['type'] != 'asc') { $url = request()->fullUrlWithQuery([ $this->sortName => $sort, ]); } else { $url = request()->fullUrlWithQuery([ $this->sortName => [], ]); } return " "; } }