Nun möchte ich gerne, dass der Anwender sich zur leichteren Entscheidung auch aktuelle Werte einblenden lassen kann. Da das Holen der Werte zeitintensiv ist, gibt es dafür einen Button (Read Values) und dann werden die Werte in der Spalte Values (mit „save“: false) über UpdateFormField() angezeigt.
Leider geht durch die Aktion die Instanz immer in den Änderungsmodus, den ich aber gerne vermeiden möchte, da sich ja an den zu speichernden Werten nichts geändert hat.
Gibt es da eine Möglichkeit, das ApplyChanges zu verhindern?
Unabhängig von den neuen onEvents…
Kann man inzwischen auch die ganze Liste als PHP-Variable nutzen? Oder immer noch nur die selektierte Spalte?
Michael
Ist kompatibel. Wir haben daraus eine nette magische Klasse gemacht. Wenn du es wie ein Array nutzt, gehst du über alle Elemente. Wenn du es wie ein Objekt/Assoziatives Array nutzt ist es wie immer. BC ist aktuell für alle uns bekannten Fälle gegeben.
Die $VariableList ist nicht json-codiert, sondern kann direkt verwendet werden. Daher kommt wohl null zurück, da das Eingabeparameter gar kein String ist.
$VariableList ist ein Objekt (IPSList) mit den Elementen „position“, „selected“ und „array“.
Aber wie greift man darauf zu? Oder ist da noch ein Fehler drin?
Greifst du direkt mit den Spaltennamen auf das Objekt zu, erhälst du ganz wie gewohnt den Spaltenwert der ausgewählten Spalte. Greifst du mit einem numerischen Index zu, greifst du auf die entsprechende Zeile der Liste zu und kannst weiter auf die Spaltenwerte zugreifen, z.B. $VariableList[2][‚address‘]. Da man ja aber nicht immer weiß, wie viele Zeilen so eine Liste hat, kann man sie auch einfach per foreach iterieren:
foreach ($VariableList as $line) {
$position = $line['position'];
}
Ist das ein Novum in der IPS-Welt? Bislang hatte ich es noch nie mit einem Objekt IPSList zu tun.
Man muss nur wissen, dass man das Objekt nicht anderweitig (json_encode etc. )verarbeiten kann.
Ja, das Objekt ist an der Stelle Neuland, damit sowohl alte Module weiter funktionieren, als auch neue Module auf alle Zeilen zugreifen können. Das Objekt könnte man theoretisch auch noch erweitern, so dass z.B. json_encode etwas sinnvolles zurückgibt. Das mache ich gerne, wenn jemand einen entsprechenden Anwendungsfall hat.
Ich würde gerne auf den kompletten Inhalt der Liste als Array zugreifen können. Denn ich möchte ihn als Attribut speichern und später wieder mit UpdateFormField ausgeben.
Burkhard
Edit:
auch wäre schön, wenn ich die Variable irgendwie an IPS_RequestAction übergeben könnte, denn
"onClick": "$module = new IPSModule($id); IPS_RequestAction($id, 'CreateVariables', $VariableList);"