Um eine Auswahl aus einer großen Datenmenge zu treffen, gibt es das Autocomplete Widget. Die Struktur für die Content Structure ist:
<?
...
public contentStructure(){
return array(
array(
"key"=>"variablenname",
"label"=> "Gib deine Auswahl ein",
"type" => "autocomplete",
)
);
}
public function performElementSearch($key,$query){
if($key!="variablenname"){
return array(array('key'=>-1,'value'=>'Kein Suchtreffer'));
} else {
... Ergebnisse suchen ...
return array(
array('key'=>0,'value'=>'Eintrag eins'),
array('key'=>1,'value'=>'Eintrag zwei')
);
}
}
public function getElementValue($key,$id){
if($key!="variablenname")
return "Nicht implementiert";
... Lesbarer Value Titel heraussuchen anhand der gespeicherten $id
return $value;
}
...
?>
Das Autocomplete Widget benötigt zwei weitere Methoden in der Box Klasse.
performElementSearch($key, $query)
Diese Methode führt die Suche aus und gibt ein Array mit Suchergebnissen zurück. $key ist der eindeutige Identifikator des Autocomplete Widgets. Für den Fall, dass mehr als ein Autocomplete Feld geplant ist können hiermit unterschiedliche Suchen ausgelöst werden. $query ist der eingegebene Suchtext.
Die Rückgabe ist ein Array aus Key-Value Paaren. Wobei key der Wert ist, welcher in der content Variable gespeichert wird und value der menschenlesbare Anzeigetext der Auswahl.
getElementValue($key, $id)
Wenn der Box Editor das Widget lädt, wird über diese Methode der menschenlesbare Anzeigetitel zurückgegeben. Dafür bekommt die Methode als Parameter den eindeutigen Widget $key und die gespeicherte $id der content Variable.