# Retour complexe dans les aides à la saisie
# Spécification de l'aide à la saisie complexe
Les retours des aides à la saisie peuvent juste être des valeurs, mais l'interface web des Smart Elements retourne des informations plus détaillées.
Une valeur retournée complexe a la forme d'un tableau indexé avec les index suivants :
value
: Valeur brute qui sera affectée dans le formulairedisplayValue
: Texte affiché dans le formulaire
Ces valeurs sont interprétées différemment suivant les types de champs. Un champ de type file
peut avoir en plus les
index suivants :
mime
: type mime ("application/pdf" par exemple)size
: taille du fichier (en octets)creationDate
: date de création du fichiericon
: url correspondant au type mime du fichierurl
: url de téléchargement du fichier.
Les image
ont les mêmes index que les file
avec en plus l'index thumbnail
qui permet d'indiquer en plus l'url de
la miniature à afficher.
Pour les types docid
:
icon
: url de l'icone du Smart Elementurl
: url de consultation du Smart Element.
Exemple d'une aide à la saisie sur les images. Les retours sont les fichiers enregistrés dans les Smart Element de type
IMAGE
.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0">
<smart:structure-configuration name="MYIMAGES" label="Location">
<smart:fields>
<smart:field-set name="note_fr_ident" type="frame" access="ReadWrite" label="Identification">
<smart:field-text name="note_title" is-title="true" access="ReadWrite" label="Title"/>
<smart:field-image name="note_image" access="ReadWrite"/>
</smart:field-set>
</smart:fields>
<smart:autocompletion>
<smart:field-autocomplete field="note_image">
<smart:field-callable function="Anakeen\SmartStructures\Myimages\ImagesCompletion"/>
<smart:field-returns>
<smart:field-return field="note_image"/>
</smart:field-returns>
</smart:field-autocomplete>
</smart:autocompletion>
</smart:structure-configuration>
</smart:config>
# Traitement de l'aide à la saisie complexe
Fichier "vendor/Anakeen/SmartStructures/Myimage/ImagesCompletion.php" :
Il retourne la valeur complète d'un champ image, le label affiché dans la liste affiche le titre et la miniature de l'image. L'ensemble complet des valeurs permet d'avoir directement la miniature de l'image dans le formulaire ainsi que toutes ces informations spécifiques.
<?php
namespace Anakeen\SmartStructures\Myimages;
use Anakeen\Core\Utils\FileMime;
use Anakeen\Core\Utils\Strings;
use Anakeen\Search\Filters\TitleContains;
use Anakeen\Search\SearchElements;
use Anakeen\SmartAutocompleteRequest;
use Anakeen\SmartAutocompleteResponse;
use Anakeen\Vault\FileInfo;
class ImagesCompletion
{
public function __invoke(
SmartAutocompleteRequest $request,
SmartAutocompleteResponse $response,
$args
): SmartAutocompleteResponse {
$filter = $request->getFilterValue();
$s = new SearchElements("IMAGE");
$s->setSlice(20);
if ($filter) {
$s->addFilter(new TitleContains($filter));
}
$results = $s->search()->getResults();
foreach ($results as $image) {
$fileValue = $image->getRawValue("img_file");
/** @var FileInfo $fileInfo */
$fileInfo = $image->getFileInfo($fileValue, "", "object");
$fileLink = $image->getFileLink("img_file", -1, false, true);
$thumbLink = "";
if ($fileLink) {
// Miniature de 48px
$thumbLink = sprintf("/api/v2/smart-elements/%d/images/%s/-1/sizes/%sx%sc.png", $image->id, "img_file", 48, 48);
}
$v = [
"value" => $fileValue,
"displayValue" => $fileInfo->name,
"mime" => $fileInfo->mime_s,
"size" => $fileInfo->size,
"url" => $fileLink,
"creationDate" => $fileInfo->cdate,
"icon" => $image->getIcon(FileMime::getIconMimeFile($fileInfo->mime_s), 20),
"thumbnail" => $thumbLink
];
$label = sprintf('<p><img src="%s"/> %s </p>', $thumbLink, Strings::xmlEncode($image->getTitle()));
$response->appendEntry($label, [$v]);
}
return $response;
}
}