Filters
By default already 4 filter are created.
- search
- paginationPerPage
- orderByField
- orderDirection
If you want to persist your filters in session do this in the public $sessionFilter array.
public $sessionFilter = ['quantity'];
If you want to create cutoms filters, put yours filters in the customFilterList() method. By default already 1 custom filter is created. You can
create queries for yours filters in initQuery() method.
use Hoggarcrud\Hoggar\Filters\FilterText;
public function customFilterList(Request $request)
{
$this->filterList([
FilterText::make('name'),
]);
}
There are 5 types of filters.
1) Filter type Text
use Hoggarcrud\Hoggar\Filters\FilterText;
FilterText::make('name')
Create your query for Text Filter.
if ($request->filled('name')) {
$this->queryFilter = $this->queryFilter->where('name', $request->name);
}
2) Filter type Checkbox
use Hoggarcrud\Hoggar\Filters\FilterCheckbox;
FilterCheckbox::make('name')
Create your query for Checkbox.
if ($request->filled('is_active')) {
$isActive = filter_var($request->is_active, FILTER_VALIDATE_BOOLEAN);
$this->queryFilter = $this->queryFilter->where('is_active', $isActive);
}
3) Filter type Select
use Hoggarcrud\Hoggar\Filters\FilterSelect;
FilterSelect::make('name')
->params([
'contents' => [0, 1, 2],
'labels' => ['Porshe', 'Ferrari', 'Mercedes']
])
Create your query for Select.
if ($request->filled('name')) {
$this->queryFilter = $this->queryFilter->where('name', $request->name);
}
4) Filter type Date
use Hoggarcrud\Hoggar\Filters\FilterDate;
FilterDate::make('name')
->min('2024-11-12') // optional
->max('2025-11-12') // optional
Create your query for Date.
if ($request->filled('name')) {
$this->queryFilter = $this->queryFilter->where('name', $request->name);
}
5) Filter type Number
use Hoggarcrud\Hoggar\Filters\FilterNumber;
FilterNumber::make('name')
->min(1) // optional
->max(20) // optional
->step(0.2) // optional
Create your query for Number.
if ($request->filled('name')) {
$this->queryFilter = $this->queryFilter->where('name', $request->name);
}