views_autocomplete_api
This module allows you to populate any autocomplete textfield via Views driven data and as little coding as possible. This is a tiny module. It is known to work with views built on top of Search API module.
This module does not package any style for now. Screenshot is an example of result you can achieve after some CSS work. Of course, we would be happy to include any provided style proposed in the issue queue !
Usage
1 - Create one or more views :
- The last field of the View is used to show the proposed results. You can rewrite results to combine multiple fields (images, links, texts, etc.)
- The field before will be used for injection on selection and should be plain text (you can rewrite the field as well)
- You can use header / footer and no result behavior.
- The exposed filters will be used to filter the view with the input of the user into the autocomplete text field (you can user AND / OR, so for example seach on users the name or email). You can still use non-exposed filters to restrict the search.
- You can use [autocomplete] token that contains the current search input
2 - Just do a little form_alter against any textfield element :
$form['my_text_field']['#autocomplete_route_name'] = 'views_autocomplete_api';
$form['my_text_field']['#autocomplete_route_parameters'] = [
'view_name' => 'my_view_name1,my_view_name2,...'
];
Note that the master display of the Views will be used.
Views Autocomplete Search is a good example for testing some of those functionalities applied to the search field of the core default search block.
Differences with the D7 version : you can use [autocomplete] token wherever you are (for example in the header of the View to link to a research page). Drupal 8 version supports highlighting as well.
Alternative modules:
Search Autocomplete : uses Views as well to generate autocomplete path.