Before creating your own filters, you may want to check out filterable fields. Filterable fields can solve the filtering needs of most Nova installations without the need to write custom code.
Select Filters
The most common type of Nova filter is the “select” filter, which allows the user to select a filter option from a drop-down selection menu:
nova:filter Artisan command. By default, Nova will place newly generated filters in the app/Nova/Filters directory:
apply and options. The apply method is responsible for modifying the underlying Eloquent query to achieve the desired filter state, while the options method defines the “values” the filter may have. Let’s take a look at an example UserType filter:
options method should return an array of keys and values. The array’s keys will be used as the “human-friendly” text that will be displayed in the Nova UI, while the array’s values will be passed into the apply method as the $value argument. This filter defines two possible values: admin and editor.
As you can see in the example above, you may leverage the incoming $value to modify your query, and the apply method should return the modified query instance.
Boolean Filters
Nova also supports “boolean” filters, which allow the user to select multiple filter options via a list of check-boxes:
nova:filter --boolean Artisan command. By default, Nova will place newly generated filters in the app/Nova/Filters directory:
apply and options. The apply method is responsible for modifying the Eloquent query to achieve the desired filter state, while the options method defines the “values” the filter may have.
When building boolean filters, the $value argument passed to the apply method is an associative array containing the boolean value of each of your filter’s options. Let’s take a look at an example UserType filter:
options method should return an array of keys and values. The array’s keys will be used as the “human-friendly” text that will be displayed in the Nova UI. The array’s values will be passed into the apply method as the $value argument. This filter defines two possible values: admin and editor.
As you can see in the example above, you may leverage the incoming $value to modify your query. The apply method should return the modified query instance.
Date Filters
Nova also supports “date” filters, which allow the user to select the filter’s value via a date selection calendar:
nova:filter --date Artisan command. By default, Nova will place newly generated filters in the app/Nova/Filters directory:
apply. The apply method is responsible for modifying the query to achieve the desired filter state.
When building date filters, the $value argument passed to the apply method is the string representation of the selected date. Let’s take a look at an example BirthdayFilter filter:
$value to modify your query. The apply method should return the modified query instance.
Filter Titles
If you would like to change the filter title that is displayed in Nova’s filter selection menu, you may define aname property on the filter class:
name method on the filter class:
Filter Default Values
If you would like to set the default value of a filter, you may define adefault method on the filter class:
Dynamic Filters
There may be times when you want to create a dynamic filter which filters on columns that are determined at runtime, allowing you to reuse a filter class across multiple different resources and fields. To accomplish this, you could pass the name of the filterable column into the filter’s constructor. In addition to passing the column name that we want to filter on in the constructor, we’ll also need to override thekey method of the filter so that Nova can uniquely identify this instance of the filter if multiple instances of this filter exist on the page. Let’s take a look at an example TimestampFilter filter: