Autocomplete function for textfield of Form API | Drupal 8

Autocomplete function for textfield of Form API

Submitted by editor on Tue, 09/12/2017 - 15:10
Question

How to create an autocomplete text field using drupal 8 Form API ?

First, Create autocomplete controller and the route

Example of the controller : DefaultController.php

<?php

namespace Drupal\mymodule\Controller;

use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Drupal\Core\Controller\ControllerBase;

class DefaultController extends ControllerBase{
  /**
   * Returns response for the autocompletion.
   */
  public function autocomplete(Request $request) {
    $matches = ['Value 1', 'Value 2', '... ...'];
    return new JsonResponse($matches);
  }
}

Example of the route : mymodule.routing.yml

mymodule.autocomplete:
  path: '/mymodule/autocomplete'
  defaults:
    _controller: '\Drupal\mymodule\Controller\DefaultController::autocomplete'
  requirements:
    _access: 'TRUE'

Then add this route to the field

Example :

$form['myfield'] = [
  '#type' => 'textfield',
  '#title' => t('Autocomplete text field'),
  '#autocomplete_route_name' => 'mymodule.autocomplete',
];

See Entity Autocomplete From here

Comments

maya (not verified)

Tue, 01/23/2018 - 11:01

bonjour,

j'ai un array de  70326 valeurs,la recherche ne parche pas.

Pouvez vouz me conseiller 

merci

youssouf (not verified)

Fri, 06/08/2018 - 11:04

How to retrieve data from solr index or database using your issue ?

Do you know how to simply add autocomplete search api on custom form programmatically !

thank you in advance !

Add new comment

Plain text

  • No HTML tags allowed.
  • Lines and paragraphs break automatically.
  • Web page addresses and email addresses turn into links automatically.