Download the PHP package labrodev/laravel-filter-components without Composer
On this page you can find all versions of the php package labrodev/laravel-filter-components. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download labrodev/laravel-filter-components
More information about labrodev/laravel-filter-components
Files in labrodev/laravel-filter-components
Package laravel-filter-components
Short Description Package to extend filters for CRUD (with using Spatie Laravel Query Builder)
License MIT
Homepage https://github.com/labrodev/laravel-filter-components
Informations about the package laravel-filter-components
labrodev/laravel-filter-components
This repo is Laravel package to extend filtering functionality in Laravel projects. If you have a list with items and you use spatie/laravel-query-builder to filter them, this package could be useful for you.
This package based on spatie/laravel-query-builder use case. We express our appreciation to Spatie for inspiring us, sharing valuable experiences, and providing exceptional Laravel packages that we not only extensively use but also wholeheartedly recommend.
QueryBuilder classes
In this package you may find some custom part of Query Builder to extend filtering logic.
DateRangeFilter
QueryBuilder class which implements a logic to filter by range of dates using WhereBetween.
IsNotNullFilter
QueryBuilder class which implements a logic to filter by whereNull or whereNotNull depend on the given input value. Could be used when we just need to filter by some flag behind which there is a logic (like: Have unpaid invoices - Yes/No).
WhereInFilter
QueryBuilder class which implements a logic to filter b whereIn using given array of values (good for multiple selects as filters).
View components
Also in this package you may find filter components that render filter component depends on type and logic.
You may public vendor views from this package to implement your own styles for filter components blade templates and to adjust it to your layout and theme.
By default filter components in blade use Bootstrap classes.
Boolean filter
View component to render a filter with select options No,Yes (or custom options defined in component attribute).
Custom select filter
View component to render a filter with custom select options as filter options.
Date range filter
View component to render a filter with two date inputs as date range (start date and end date).
Input filter
View component to render a filter with text input.
Multiple select field
View component to render a filter with multiple select options from given Eloquent Model.
Select field
View component to render a filter with select options from given Eloquent Model.
Link
View component to render a sort field.
Installation
You can install the package via composer:
Optionally, you can publish the views to implement them to your layout.
Optionally, you can publish the view components to extend the logic you need.
Usage
QueryBuilder classes
Let's assume that you are familiar with Spatie\QueryBuilder and already implemented filtering logic using Spatie\QueryBuilder.
You may extend usage by using QueryBuilder classes from this package: DateRangeFilter, WhereInFilter, IsNotNullFilter.
View components
Let's consider that you want to have a filtering in your CRUD list.
There could be a filter block. Let's assume to may have a form for your filters.
Boolean filter
- field - this property is query parameter which will be in search request
- name - this is label for this filter
- options - options which will be in select box; if it is not provided, then it will No, Yes options by default
Custom select filter
- field - this property is query parameter which will be in search request
- name - this is label for this filter
- options - options which will be in select box
Date range filter
- field - this property is query parameter which will be in search request
- name - this is label for this filter
Input filter
- field - this property is query parameter which will be in search request
- name - this is label for this filter
Multiple select filter
- field - this property is query parameter which will be in search request
- name - this is label for this filter
- class - Eloquent model class from where will be taken values for options. For example, if class is App\Models\UserGroup, then will be rendered all user groups from
user_groups
table as options - value - property which will be shown as options. For example, if value will be
name
, columnname
fromuser_groups
table will be used for option; if you want to split two columns to have them as option, put in value them separeted by comma: 'column1,column2'
Select filter
- field - this property is query parameter which will be in search request
- name - this is label for this filter
- class - Eloquent model class from where will be taken values for options. For example, if class is App\Models\UserGroup, then will be rendered all user groups from
user_groups
table as options - value - property which will be shown as options. For example, if value will be
name
, columnname
fromuser_groups
table will be used for option; if you want to split two columns to have them as option, put in value them separeted by comma: 'column1,column2'
Link
- name - field to sort
Testing
PhpStan check
Changelog
Please see CHANGELOG for more information on what has changed recently.
Credits
License
The MIT License (MIT). Please see License File for more information.
All versions of laravel-filter-components with dependencies
spatie/laravel-package-tools Version ^1.14.0
illuminate/contracts Version ^10.0
spatie/laravel-query-builder Version >=5.6.0
spatie/query-string Version >=1.0