CustomerVendor-Controller: Daten in Neu-Anzeige bei Fehler beibehalten
authorMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 25 Nov 2014 13:29:02 +0000 (14:29 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 25 Nov 2014 13:35:17 +0000 (14:35 +0100)
commit83b3c64ecfdbcd1c3dc1e1586af1260bc0917aeb
treeee3b28531a2d3aed047c5b765a3d24bc4fa702a1
parent3b01b816f1c52e187babf1988d7e7d765fe18299
CustomerVendor-Controller: Daten in Neu-Anzeige bei Fehler beibehalten

RDBO hat das Verhalten, dass bei einem neuen, noch nicht gespeicherten
Objekt die Methoden zum Hinzufügen von Relationship-Objekten (z.B. in
1:n-Beziehnungen wie $customer->add_contacts(…)) beim danach erfolgenden
Auslesen der Beziehung nicht zurückliefert. Das heißt, dass Folgendes
der Fall ist:

my $customer = SL::DB::Customer->new;
$customer->add_contacts(SL::DB::Contacts->new);
print scalar(@{ $customer->contacts || [] }); # Das hier gibt 0 aus

Existiert das Objekt hingegen schon, dann klappt das normal. Das Problem
kann man umgehen, indem man beim Anlegen des neuen Objektes die
Beziehungen explizit auf eine leere Array-Referenz setzt, damit der in
RDBO enthaltene Check an der Stelle greift.

Das betrifft den Workflow, wenn man Daten in den benutzerdefinierten
Variablen eingibt, auf Speichern drückt und kivitendo dann wegen eines
fehlgeschlagenen Checks die Maske erneut anzeigt.
SL/Controller/CustomerVendor.pm
templates/webpages/customer_vendor/tabs/custom_variables.html