Documentation Index
Fetch the complete documentation index at: https://filamentphp.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Introduction
Global search allows you to search across all of your resource records, from anywhere in the app.Setting global search result titles
To enable global search on your model, you must set a title attribute for your resource:getGlobalSearchResultTitle() method. It may return a plain text string, or an instance of Illuminate\Support\HtmlString or Illuminate\Contracts\Support\Htmlable. This allows you to render HTML, or even Markdown, in the search result title:
Globally searching across multiple columns
If you would like to search across multiple columns of your resource, you may override thegetGloballySearchableAttributes() method. “Dot notation” allows you to search inside relationships:
Adding extra details to global search results
Search results can display “details” below their title, which gives the user more information about the record. To enable this feature, you must override thegetGlobalSearchResultDetails() method:
category and author relationships will be lazy-loaded, which will result in poor results performance. To eager-load these relationships, we must override the getGlobalSearchEloquentQuery() method:
Customizing global search result URLs
Global search results will link to the Edit page of your resource, or the View page if the user does not have edit permissions. To customize this, you may override thegetGlobalSearchResultUrl() method and return a route of your choice:
Adding actions to global search results
Global search supports actions, which are buttons that render below each search result. They can open a URL or dispatch a Livewire event. Actions can be defined as follows:Opening URLs from global search actions
You can open a URL, optionally in a new tab, when clicking on an action:Dispatching Livewire events from global search actions
Sometimes you want to execute additional code when a global search result action is clicked. This can be achieved by setting a Livewire event which should be dispatched on clicking the action. You may optionally pass an array of data, which will be available as parameters in the event listener on your Livewire component:Limiting the number of global search results
By default, global search will return up to 50 results per resource. You can customize this on the resource label by overriding the$globalSearchResultsLimit property:
Moving the global search to the sidebar
By default, the global search field is positioned in the topbar. If the topbar is disabled, it is added to the sidebar. You can choose to always move it to the sidebar by passing aposition argument to the globalSearch() method in the configuration:
Sorting global search results
By default, global search results are ordered alphabetically by resource name. You can customize this order by setting the$globalSearchSort property on your resource:
Disabling global search
As explained above, global search is automatically enabled once you set a title attribute for your resource. Sometimes you may want to specify the title attribute while not enabling global search. This can be achieved by disabling global search in the configuration:Requiring resources to opt in to global search
By default, all resources with a title attribute are included in global search results. If you’d prefer resources to explicitly opt in, you can use theglobalSearchResourceOptIn() method in the configuration:
$isGloballySearchable to true will be included in global search results:
Registering global search key bindings
The global search field can be opened using keyboard shortcuts. To configure these, pass theglobalSearchKeyBindings() method to the configuration:
Configuring the global search debounce
Global search has a default debounce time of 500ms, to limit the number of requests that are made while the user is typing. You can alter this by using theglobalSearchDebounce() method in the configuration:
Configuring the global search field suffix
Global search field by default doesn’t include any suffix. You may customize it using theglobalSearchFieldSuffix() method in the configuration.
If you want to display the currently configured global search key bindings in the suffix, you can use the globalSearchFieldKeyBindingSuffix() method, which will display the first registered key binding as the suffix of the global search field:
globalSearchFieldSuffix() method. For example, to provide a custom key binding suffix for each platform manually:
Disabling search term splitting
By default, the global search will split the search term into individual words and search for each word separately. This allows for more flexible search queries. However, it can have a negative impact on performance when large datasets are involved. You can disable this behavior by setting the$shouldSplitGlobalSearchTerms property to false on the resource: