• Willkommen im Zend Framework Forum

    ZF1 Zend Framework 1 + ZF2 Zend Framework 2

    Das Zend Framework Forum ist seit 2006 die erste Anlaufstelle für Zend Framework Entwickler in Deutschland. Mit über 70.000 Beiträgen und einer steigenden Nutzerzahl bietet das Forum hilfreiche Themen und ZF-Tutorials für professionelle Entwickler, fortgeschrittene Programmierer sowie Zend Framework Einsteiger.
    Wenn dies Dein erster Besuch in der Zend Framework Community ist, lies bitte zuerst die Hilfe - FAQ durch. Du musst Dich registrieren, bevor Du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um die Registrierung zu starten. Du kannst auch jetzt schon Beiträge lesen. Hier im Forum findest Du die Zend Framework Hilfe, die Du suchst!

    Grüße an alle Zend Framework Entwickler. Das Team vom Zend Framework Forum!

    Drupal Agentur

ZF 3 Formular mit nested fieldsets

Rogaa

New member
Hallo zusammen,

ich habe momentan die Schwierigkeit in meinem Projekt ein Formular, welches ein Objekt aus der Datenbank mit Relationen zu anderen Db-Tabellen (die als fieldsets dargestellt werden) auszugeben.

Die Struktur ist folgende:

  • EmployeeForm
    • EmployeeFieldset (default) - bind employee object (db table `employee`)
      • BankFieldset - bind bank object (db table `bank`) 1:N Beziehung
      • weitere fieldsets
Das Formular wird validiert (Filter passen soweit), allerdings werden meine Fieldsets nicht befüllt.

Die Besonderheit ist, dass ich mein employee Objekt aus der Datenbank direkt mit Joins (wegen den Beziehungen) hole und somit das employee Objekt direkt auch eine Eigenschaft des bank Objekts bekommt. (Das ganze geschieht via custom Hydrator).

Ich habe bereits einige Threads hier im Forum ohne Erfolg gelesen.

Da ich ziemliche Schwierigkeiten habe meinen PHP Code hier einzufügen ("Post denied. New posts are limited by number of URLs it may contain and checked if it doesn't contain forbidden words."),
habe ich das ganze nun als Gist aufgesetzt.

Ich hoffe das ist in Ordnung und falls ich hier die Foren Richtlinie missachtet habe, bitte ich dem nachzusehen bzw. mir zu sagen, welche syntax spezifischen Zeichenketten hier als "böse" deklariert werden.

Link: https://gist.github.com/rogatec/a36c599bd5b8fe4d2c0a67cbb63f5e93

In diesem Gist könnt ihr alle relevanten Dateien vorfinden (1:1 wie bei mir, nur etwas gekürzt z.B. die ca. 20 anderen Eigenschaften vom Employee und einige Kommentare wurden auch der Übersichtlichkeit her entfernt.)
  • Model: Employee
  • Model: Bank
  • IndexController mit Factory
  • EmployeeForm mit Factory
  • EmployeeFieldset mit Factory
  • BankFieldset mit Factory
Die Ausgabe nachdem mein Formular als valide angesehen wird, sieht wie folgt aus:

Ausgabe \Zend\Debug\Debug::dump($this->form->getData());: (ebenfalls gekürzt)
PHP:
object(Employee\Model\Employee)#433 (54) {
  ["id"] => int(1)
  ["bankId"] => string(1) "1"
  ["bank"] => object(Employee\Model\Bank)#633 (3) {
    ["id"] => string(1) "1"
    ["name"] => string(16) "Deutsche Bank AG"
    ["bic"] => string(11) "DEUTDEFFXXX"
  }
}
Hier sehe ich, dass das die Daten sind, die aus der Datenbank beim initialisieren geholt wurden - also NICHT meine geänderten Formular Inhalte.

Ausgabe \Zend\Debug\Debug::dump($request->getPost());:
PHP:
object(Zend\Stdlib\Parameters)#125 (1) {
  ["storage":"ArrayObject":private] => array(3) {
    ["employee"] => array(45) {
      ["bank"] => array(1) {
          ["beschreibung"] => string(1) "2"
      }
      ["id"] => string(1) "1"
    }
    ["csrf"] => string(65) "984ec4556a2ce94c01c9fa83eafdb160-a2655b89457eee061e050d3098b4eb3d"
    ["submit"] => string(9) "Speichern"
  }
}
Anstatt beschreibung bei der Bank steht hier das englische Wort - hier meckert aber das vBulletin, daher meine deutsche Übersetzung - hoffentlich ist das nicht zu sehr verwirrend.


Wie man erkennen kann, hat der $_POST eine andere Bank genommen, da ich nicht wie in der Datenbank stehend die Deutsche Bank (ID:1) gewählt habe sondern eine Sparkasse.

Um Ratschläge wo der Haken sein könnte wäre ich sehr dankbar und hoffe, dass trotz der Vielzahl der Dateien & Codezeilen im Gist sich jemand die Mühe machen kann, sich das anzuschauen.
 
Oben