Dokumentation
IPS_UpdateFormField
bool IPS_UpdateFormField (string $Feld, string $Parameter, mixed $Wert, string $SessionID)
Parameterliste
| Feld | Name des zu ändernden Formularfeldes |
| Parameter | Name des zu ändernden Parameters |
| Wert | Neuer Wert des Parameters |
| SessionID | SessionID des geöffneten Aktionsformulars |
Rückgabewert
Konnte die Funktion erfolgreich ausgeführt werden, liefert sie als Ergebnis TRUE, andernfalls FALSE.
Beschreibung
Die Funktion setzt den Parameter Parameter des Formularfeldes mit dem Namen Feld im geöffneten Formular einer Aktion auf den Wert Wert. Das Formular wird über die SessionID identifiziert. Innerhalb der Formularfelder einer Aktion, z.B. in "onChange", steht die SessionID in der Variable $id zur Verfügung.
Die Funktion ist das Gegenstück zur Modulfunktion UpdateFormField ($this->UpdateFormField), welche Formularfelder in den geöffneten Konfigurationsformularen einer Instanz verändert. Da das Formular einer Aktion zu keiner Instanz gehört, wird es stattdessen über die SessionID angesprochen.
Die Änderung wird als Nachricht an die verbundenen Clients, z.B. die Konsole, gesendet. Es wird nicht geprüft, ob ein Formular mit dieser SessionID geöffnet ist oder das Formularfeld existiert. In diesem Fall hat der Aufruf keine Wirkung, die Funktion liefert trotzdem TRUE.
Es ist nicht möglich die Parameter name und type von Formularfeldern zu verändern. Weitere nicht veränderbare Parameter sind in der jeweiligen Dokumentation aufgeführt.
Als Wert sind nur Boolean, Integer, Float und String möglich. Bei komplexen Parametern, also Listen oder Objekten, muss der neue Wert JSON-kodiert übergeben werden.
Beispiel
// Dynamisches Formular einer Aktion (Eintrag "form"): Wird eine andere Statusvariable ausgewählt,
// wird das Ziel des Feldes "ACTION" im geöffneten Aktionsformular angepasst. $id enthält die SessionID
return [
[
'type' => 'Select',
'name' => 'IDENT',
'caption' => 'Status Variable',
'options' => $options,
'onChange' => 'IPS_UpdateFormField("ACTION", "targetID", IPS_GetObjectIDByIdent($IDENT, ' . $_IPS['TARGET'] . '), $id);'
],
[
'type' => 'SelectAction',
'name' => 'ACTION',
'caption' => 'Action'
]
];