• Jeder User im Forum verpflichtet sich zur Akzeptanz und zur Einhaltung dieser Regeln:
    1. Umgangston
      Ein angemessener höflicher Umgangston, ohne Beleidigungen, Beschimpfungen und aggressive Postings ist für jedes Mitglied Pflicht.
    2. Beiträge
      Jedes Mitglied sollte sich bemühen nur sinnvolle Beiträge zum Thema zu posten. Dabei ist unbedingt vorher zu prüfen, ob das Thema vorher schon einmal diskutiert wurde und daher fortgesetzt werden kann
      • Suchfunktion benutzen!
      • offizielle Doku lesen!
    3. Haftung
      Jeder Beitragsersteller übernimmt die alleinige Verantwortung seiner Inhalte.
    4. Werbung
      Wir erlauben keine Beiträge, Signaturen, Private Nachrichten oder eMails an Benutzer, die Werbung enthalten. Ausgenommen
      sind Stellengesuche /-angebote, welche ausschließlich im Forum "Stellengesuche" veröffentlicht werden dürfen.
    5. Verstöße
      Regelwidrige Beiträge sollten dem Team gemeldet werden. Nach deren Überprüfung werden wir schnellstmöglich
      entsprechend handeln.
    6. Authorität
      Den Anweisungen der Team-Mitglieder (Administratoren und Moderatoren) sind in diesem Forum Folge zu leisten.
      Bei Fragen oder Beschwerden bitte an diese wenden.
    Wir möchten Euch darauf aufmerksam machen, dass es bei Verstößen gegen einen oder mehreren der oben genannten
    Punkte dem Team frei steht entsprechend zu handeln. Dies kann z.B. das Löschen eines Beitrags, das Ausschliessen bzw.
    Sperren von Mitgliedern oder aber lediglich eine Verwarnung sein.

    In diesem Zusammenhang sollte erwähnt werden, dass das Forum automatisch die IP-Adresse jedes Beitrag-Erstellers
    speichert. Bei schweren Vergehen, behalten wir es uns vor, die IP-Adresse zur Strafverfolgung weiterzugeben.
  • 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

Wie per select eingegebenes Objekt in der Datenbank speichern?

Maddin1604

New member
Hallo Zusammen!

Ich arbeite mich gerade in das Zend Framework (v. 1.12.7) ein und stehe vor folgendem Problem:

Es geht konkret um die Form einer Benutzerklasse. Hier soll ein Benutzerobjekt so angelegt werden können, dass das dazugehörige Rollenobjekt und Gruppenobjekt per Drop Down (Select) ausgewählt werden können. In der Datenbank werden die IDs der Rolle bzw. Gruppe in der Benutzertabelle gespeichert. Leider kommen in der Datenbank schlicht und ergreifend keine Werte für RolleID und für GruppeID an.

Benutzer Form:
PHP:
$rollen = new Application_Model_Rolle(); 
              $entries = array();
           $mapper = new Application_Model_RolleMapper();
           $rollen = $mapper->fetchAll();
           
           foreach ($rollen as $rolle) {
               $entry = new Application_Model_Rolle();
               $entry->setR_id($rolle->r_id);
               $entry->setBezeichnung($rolle->bezeichnung);
               $entries[] = $entry->bezeichnung;
               $values[] = $entry->r_id;
           }
        $this->addElement('select', 'rolle', array(
                'label'      => 'Rolle:',
                'required'   => false,
                'multiOptions' => $entries,
                'value' => $values,
         ));
Benutzer Controller:

PHP:
public function addAction()
    {
        $request = $this->getRequest();
        $form    = new Application_Form_Benutzer();
        
        if ($this->getRequest()->isPost()) {
            if ($form->isValid($request->getPost())) {
                $benutzerdaten = new Application_Model_Benutzer($form->getValues());
                implode(" ",$form->getValues());

                $mapper  = new Application_Model_BenutzerMapper();
                $mapper->save($benutzerdaten);
                return $this->_helper->redirector('index');
            }
        }
        
        $this->view->form = $form;
    }
Benutzer Mapper:

PHP:
public function save(Application_Model_Benutzer $benutzer)
    {
    
        
        $data = array(
                'b_id'   => $benutzer->getB_id(),
                'nachname' => $benutzer->getNachname(),
                'vorname' => $benutzer->getVorname(),
                'benutzername' => $benutzer->getBenutzername(),
                'email' => $benutzer->getEmail(),
                'telefon' => $benutzer->getTelefon(),
                'passwort' => $benutzer->getPasswort(),
                'r_id' => $benutzer->getRolle()->getR_id(),
                'g_id' => $benutzer->getGruppe()->getG_id(),
        );
        
            
        if (null === ($b_id = $benutzer->getB_id())) {
            unset($data['b_id']);
            $this->getDbTable()->insert($data);
        } else {
            $this->getDbTable()->update($data, array('b_id = ?' => $b_id));
        }
    }
Edit: Wenn ich mir im Controller mittels: $form->getValue('rolle') den in der Form eingegebenen Wert für die Rolle ausgeben lassen möchte, dann wird jedes Mal der Wert 1 ausgegeben. Im DropDown Menü erscheinen aber die korrekten Bezeichnungen der Rolle- bzw. Gruppe- Objekte.

Was mir nicht ganz klar ist, ist wie ich es hinbekommen kann, dass die Objekte (Rolle, Gruppe) aus der Form im Benutzerobjekt landen, das im Controller initialisiert wird.
Hat wer von euch eine Idee? :)

Vielen Dank schonmal für Eure Hilfe!

VG Martin
 
Zuletzt bearbeitet:

Kaiuwe

Super-Moderator
Willkommen im Forum! :)
Ich arbeite mich gerade in das Zend Framework (v. 1.12.7) ein und stehe vor folgendem Problem:
Dein Problem ist ein ganz anderes: du arbeitest dich in eine falsche Version ein! Version 3 vom ZF steht vor der Tür und Version 1 wird demnächst nur noch Sicherheits-Updates erhalten. Lass also ZF1 ganz schnell liegen und fange mit Version 2 und den Neuerungen für ZF3 aus den verschiedenen Komponenten an.
 

Maddin1604

New member
Hey! Erstmal danke für deine Antwort! Dieser Umstand ist mir durchaus bewusst. Ich verwende das Framework für ein Praktikum an der Uni. In meiner Gruppe sind die Programmierkenntnisse relativ gering. Allerdings haben zwei von uns (ich inklusive) bereits mit einem Framework Erfahrung, das dem Zend Framework 1 ähnelt. Daher ist es für uns wohl die praktikabelste Lösung, um neben zahlreicher weiterer Kurse im vorgegeben Zeitraum mit dem Projekt fertigzuwerden! ;)
 

Powers

New member
Liegt echt nicht daran, dass niemand helfen will, da bin ich mir sicher. Aber ZF1 liegt mittlerweile schon Jahre zurück. Und damals war ich selbst noch Einsteiger und habe daran im Studium gelernt.

Ich versuche mir trotzdem mal Deine Codebeispiele reinzudenken.

Da völlig korrekt oben im addElement die ID's der Datensätze reingegeben werden, frage ich direkt mal nach: Bist Du sicher, dass es sich bei dem Wert den Du dir ausgeben lässt (value = 1) nicht völlig korrekterweise um die Datenbank-ID des Datensatzes von "Rolle" handelt? Weil die Bezeichner dienen nur dem Benutzer - man verarbeitet intern ja stets mit den ID's der Datensätze. Aus den Formularen kriegt man dann auch in erster Linie die "values" zurückgegeben und nicht die bezeichner (allenfalls additional). Alles andere wäre haarsträubend.

Ansonsten denke ich nun an die normalen Formen des Debuggings: Sieht das Formular im Browser mit den hineingegebenen Daten auch genau so aus, wie es sollte?

Wie sieht denn das komplette Objekt aus, was bei Dir im Controller landet?
 
Zuletzt bearbeitet:
Oben