Dieses Plugin erzeugt ein einzeiliges Textfeld um unterschiedliche Werte über einen Store zu suchen und auszuwählen.
Parameter-Name | Typ | Erforderlich | Beschreibung |
data | String | Array | Ja |
Typ der Daten (user, group, role, page). Kann auch ein Array mit mehreren Werten sein. |
width | Integer | Nein |
Breite des Input Plugins. |
size | Integer | Nein |
Wieviele Treffer werden pro Seite angezeigt (Standard: alle). |
hasDownArrow | Boolean | Nein |
Ein Pfeil wird angezeigt, welcher alle möglichen Werte auflistet (Standard: false). |
invalidMessage | String | Nein |
Nachricht bei falscher Eingabe. |
query | Array | Nein |
Analog zu z.B. getPages, um SQL Anweisungen weiterzureichen. |
params | Array | Nein |
Zusätzliche Parameter als Array. |
source | String | Nein |
Eigene Store Klasse (sollte von lib/base/Ego_Input_Store.php erben). |
Im Textfeld kann man auch suchen. Passende Treffer werden dann zur Auswahl angeboten. Alternativ kann man über das DropDown Menü alle Treffer durchblättern.
Wenn Sie für data ein Array übergeben, können Sie mehrere Datenbestände nebeneinander anzeigen. Die einzelnen Werte werden dann kommasepariert gespeichert.
{input type="store" name="store" title="store"}
{input type="store" name="store1" title="Store" data.0="page" data.1="user" data.2="role"}
Eigener Store
Ein eigener Store sollte von lib/base/Ego_Input_Store.php
erben und die Methode getData()
überschreiben. Die Bezeichnung Ihrer Klasse sollte auch gleichzeitig der Dateiname sein. Diese Methode hat keinen Rückgabewert. Stattdessen wird jedes Element, dass über das Plugin ausgewählt werden soll, über die Methode addItem(Array)
einer finalen Liste hinzugefügt. Das übergebene Array muss eine eindeutige Identifizierung (Schlüssel) und einen Namen (für die Anzeige im Plugin) besitzen. Zusätzlich kann auch ein Pfad zu einem Icon angegeben werden.
$this->addItem([
self::IDENTIFIER => 'ID',
'name' => 'LABEL',
'icon' => 'ICON PATH'
]);
Die Variablen $this->start
und $this->limit
können Sie verwenden, um herauszufinden auf welcher Seite im Store Sie sich gerade befinden und wie viele Elemente pro Seite ausgegeben werden.
Die Variable $this->value
beinhaltet immer den aktuell im Plugin ausgewählten Wert. Befindet man sich hingegen in der Suche, ist dieser Wert leer und die Variable $this->name
kann genutzt werden (als Wildcard wird % gesetzt). Diese beinhaltet den aktuell im Plugin eingetragenen Suchbegriff. Eine Unterscheidung, ob man sich gerade in der Suche befindet oder ein existierendes Element ausgewählt wurde, sieht dann so aus:
if (empty($this->value)) {
// Man befindet sich in der Suche. Über $this->name nur die Elemente finden, die zum Suchbegriff passen.
} else {
// Man hat ein Element ausgewählt. Über $this->value nur das aktuelle Element zurückgeben.
}
Wenn $this->value gesetzt ist, darf nur ein Element zurückgegeben werden. Andernfalls kann der aktuelle Wert nicht als ausgewählt markiert werden.
Der Pfad für source ist ausgehend vom ECM Installationsverzeichnis.
In $this->params finden Sie alle im Plugin für params übergebenen Parameter.
Wenn Sie für data ein Array verwenden, müssen Sie in Ihrer getData() Methode den Wert für $this->data abfragen, um für die richtige Liste handeln zu können.
Bei einem eigenen Store können Sie für data übrigens auch eigene Werte verwenden, da nur der Standard Store speziell user, group, role oder page erwartet. Allerdings reagiert das Input Combo Plugin für Parameter wie no_pages oder no_users explizit nur auf diese Werte (was auch nur dann von Bedeutung ist, wenn Sie das Combo Plugin mit dem Store Plugin kombinieren).