Created
May 20, 2016 08:01
Star
You must be signed in to star a gist
Autocomplete Example
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public function handleAutocomplete(Request $request, $target_type, $selection_handler, $selection_settings_key) { | |
$matches = array(); | |
// Get the typed string from the URL, if it exists. | |
if ($input = $request->query->get('q')) { | |
$typed_string = Tags::explode($input); | |
$typed_string = Unicode::strtolower(array_pop($typed_string)); | |
// Selection settings are passed in as a hashed key of a serialized array | |
// stored in the key/value store. | |
$selection_settings = $this->keyValue->get($selection_settings_key, FALSE); | |
if ($selection_settings !== FALSE) { | |
$selection_settings_hash = Crypt::hmacBase64(serialize($selection_settings) . $target_type . $selection_handler, Settings::getHashSalt()); | |
if ($selection_settings_hash !== $selection_settings_key) { | |
// Disallow access when the selection settings hash does not match the | |
// passed-in key. | |
throw new AccessDeniedHttpException('Invalid selection settings key.'); | |
} | |
} | |
else { | |
// Disallow access when the selection settings key is not found in the | |
// key/value store. | |
throw new AccessDeniedHttpException(); | |
} | |
$matches = $this->matcher->getMatches($target_type, $selection_handler, $selection_settings, $typed_string); | |
} | |
return new JsonResponse($matches); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment