Beitragsdatum | 09.08.2023 |
---|---|
Letzte Aktualisierung | - |
Betrifft | xataface |
Xataface ist ein Framework, um schnell und einfach komplexe Datenbankanwendungen bauen zu können.
In sogenannten actions kann beliebige Programmlogik ausgeführt werden. Actions werden im Xataface-Manual näher beschrieben.
Meine Anforderung war nun:
die Delete-Action (in all ihren Ausprägungen) sollte nur auf bestimmten Tabellen vorhanden sein bzw. auf bestimmten Tabellen nicht vorhanden sein.
Die „fest eingebauten“ Actions werden im Installationsverzeichnis von Xataface ebenfalls in der action.ini
verfügbar gemacht.
Dort suchte ich mit die gewünschten Actions heraus.
Die Actions rund ums Löschen von Datensätzen sind z.B.:
Wenn diese Actions in die lokale actions.ini
(also innerhalb des Dataface
-Verzeichnisses) kopiert werden, dann „überschreiben“ diese Actions die Actions aus der Installations-Action-Datei. Soll heißen: die Einstellungen sind anwendungsbezogen änderbar. Und das ist gut so.
Bei einer Action wird unter anderem angegeben, welche Bedingungen erfüllt sein müssen, damit diese Action ausführbar ist:
;; Delete the current record [delete] label = Delete description = Delete current record url = "{$this->url('-action=delete&-delete-one=1')}" materialIcon="delete" category = record_actions accessKey = d mode = browse condition = "$query['-mode']=='browse'" condition = "($query['-table'] != 'table_a' && $query['-table'] != 'table_b' && $query['-table'] != 't_settings' )" permission = delete order=5 rel=child
Mehrere conditions untereinander geschrieben, werden anscheinend (ich habe dazu keine offizielle Aussage gefunden) UND-verknüpft. Hier gilt also: mode == browse UND table != table_a UND table != table_b.
Innerhalb einer condition können Bedingungen ebenfalls logisch verknüpft werden:
table != table_a && table != table_b
bedeutet: diese action soll nicht auf table_a und nicht auf table_b erscheinen und kann somit auf allen anderen Tabellen ausgeführt werden.
Eine Alternative:
table == table_c || table == table_d
bedeutet: diese action kann nur auf table_c oder table_d ausgeführt werden. Auf allen anderen nicht.
Und somit kann man Standard-Actions gezielt anzeigen und ausführbar machen oder eben nicht.
Ähnliche Themen im blog:
xataface