Ich erstelle programmgesteuert viele Knoten. Offensichtlich müssen sie gültig sein, bevor sie gespeichert werden. Solche $node
Objekte haben CCK-Felder, die mit benutzerdefinierten Feldern gemischt sind.
Da die Validatoren nur a setzen form_set_error()
und das Validierungsergebnis kaum zurückgeben, muss ich die Formular-API durchgehen, um zu wissen, ob ein Knoten gültig ist, oder so scheint es.
Ich rufe node_validate()
dann an form_get_errors()
(was wiederum anruft form_set_error()
).
Bei diesem Ansatz scheint es mehrere Probleme zu geben:
form_set_error()
setzt eine Nachricht mitdrupal_set_message()
; Für Dinge wie cron (ein Benutzer ohne Sitzung) werden verwaiste persistente Fehlermeldungen zur Datenbank hinzugefügt (sie werden niemals gedruckt und daher niemals gelöscht).- Das zurückgegebene Fehlerarray wird erstellt, um in einem mehrdimensionalen Formulararray verwendet zu werden. Besonders bei CCK-Feldern muss ich ziemlich tief graben, um den tatsächlichen Fehler zu finden.
- Ich möchte nur einen Knoten speichern, daher bin ich nicht an einem benutzerbezogenen Formular interessiert. Die Verwendung der Formular-API fühlt sich einfach falsch an.
Gibt es eine einfachere, elegantere Methode?