# Aide à la saisie à une sortie entrée avec filtre

Cet exemple illustre l'utilisation du filtre sur le champ. La méthode SmartAutocompleteRequest::getFilterValue retourne la valeur saisie dans le champ indiqué par la balise config/structure-configuration/autocompletion/field-autocomplete/@field (le champ où le sélecteur est affiché). Cette méthode retourne une chaine vide si rien n'est saisi.

Astuce

Généralement, il est préférable de réaliser un trim sur le résultat du getFilterValue pour éviter des filtres trop restrictifs.

<?php
namespace Anakeen\SmartStructures\Mydestination;

use Anakeen\SmartAutocompleteRequest;
use Anakeen\SmartAutocompleteResponse;
class NoteCityComplete
{
  public function __invoke(
    SmartAutocompleteRequest $request,
    SmartAutocompleteResponse $response
  ): SmartAutocompleteResponse {
    $filter = trim($request->getFilterValue());
    $cities = ["Paris", "Rome", "Madrid"];

    foreach ($cities as $city) {
      // Filtre contient
      if ($filter === "" || stripos($city, $filter) !== false) {
        // Encode $city : Label entry is an HTML fragment
        $response->appendEntry(\Anakeen\Core\Utils\Strings::xmlEncode($city), [$city]);
      }
    }

    return $response;
  }
}