yakamara / yform

YForm für REDAXO 5 – Formulare im Frontend und Backend mit Verwaltung von Datenbank-Tabellen.
MIT License
77 stars 55 forks source link

Neue Option: Löschen von Relationen verhindern #915

Open shauste opened 4 years ago

shauste commented 4 years ago

Beim Anlegen eines „be_manager_relation“-Feldes wäre es gut eine Option zu haben, die verhindert, dass Relationen (Datensätze) von diesem Feld gelöscht werden – optional. „Relationen schützen“ o.ä.

So wird verhindert, dass auf Datensätze referenziert wird, die nicht mehr in der Relationstabelle existieren. Momentan nutze ich einen yform-Extension-Point um dies abzufangen.

alxndr-w commented 4 years ago

Du könntest evtl. an der Datenbank direkt die Fremdschlüsselüberprüfung einrichten.

christophboecker commented 4 years ago

Prinzipiell finde ich die automatische Löschabsicherung sinnvoll. (Es müsste übrigens auch de Choice-Variante "SELECT..." abgesichert werden.) Ich bin mir aber nicht sicher, ob ein Automatismus immer das konkret gewünschte Verhalten an den Tag legt, ohne jetzt ein Beispiel zu haben, ist nur ein Verdacht weil be_manager_relation echt komplex ist.

Was käme denn als Fehlermeldung? Ich lasse mir z.B. auswerfen die ersten vier gefundenen Referenzen mit einem Editlink zum direkten Einstieg in das Formular. Wird eine Tabelle aus drei anderen referenziert, sind in der Fehlermeldung ggf. drei Blöcke. Früher über EP wie bei Sven, heute läuft das mit tabellenspezifischen Dataset-Klassen(yorm). Die Abfragen auf die verbundenen Tabellen sind halt hartcodiert.

Idee 1: Aufbau der Meldung über einen EP, der alle gefundenen Collections erhält und zusätzlich für die Yorm-Fans eine korrespondierende Methode in rex_yform_manager_dataset, die man überschreiben könnte

Idee 2: In der Feldkonfiguration von be:manager_relation bzw. choice "auto-delete-check" abschaltbar oder einschaltbar machen (wie Sven schreibt)

grafik