Ergebnis 1 bis 10 von 10

Thema: Zend_Form Daten verarbeiten

  1. #1
    Benutzer
    Registriert seit
    12.05.2008
    Ort
    Leipzig
    Beiträge
    91
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard Zend_Form Daten verarbeiten

    Hallo,

    seit ein paar Tagen kämpfe ich mehr oder minder erfolgreich mit dem Zend Framework 1.10. Bisher schaffe ich es ein Formular zu erzeugen und anzuzeigen. Nun möchte ich mir die Daten, welche ich in das Formular eingebe, nach dem senden auch anzeigen lassen. Dummerweise funktioniert das noch nicht. google ist zur Zeit mein bester Freund, aber so wirklich helfen konnte er mir dabei leider auch nicht. Hat vielleicht hier jemand einen Rat für mich? Ich stehe hier irgendwie total auf dem Schlauch.
    Hier der Code:
    KontaktController
    PHP-Code:
    <?php
    require APPLICATION_PATH.'/models/KontaktForm.php';
    class 
    KontaktController extends Zend_Controller_Action
    {
        public function 
    indexAction ()
        {
            
    $form = new KontaktForm ();
            
    $this -> view -> form $form;
            
        }
        
        public function 
    sendenAction ()
        {
            
    $form = new KontaktForm();
            if (
    $this->getRequest ()->isPost() )
            {
            
    //prüfen ob Daten gültig sind
            
    if ($form -> isValid ($this -> getRequest() -> getPost()))
            {
                echo 
    $values $form -> getValue ('name');
            }
            else
            {
                
    $form -> setDescription('fehler');
            }
                
    $formData = new KontaktForm ();
                
    $this -> view -> formData $formData;
                echo 
    'gesendet';
                
    $formData $this->_request->getPost();
            }
        }
    }

    ?>
    KontaktForm
    PHP-Code:
    <?php

    class KontaktForm extends Zend_Form
    {
        public function 
    init ()
        {
            
    //setzen der Übertragungsmethode - POST
            
    $this -> setMethod ('post');
            
            
    //setzen des action - Aufruf, das Skript 'mach was'
            
    $this -> setAction ('kontakt/senden');
            
            
    //erzeugen des Input-Feldes: Name
            
    $this -> addElement ('text''name', array (
                                
    'label'    => 'Name: ',
                                
    'required' => true
                                 
    )
                                );
                                
            
    //erzeugen des Inputfeldes: E-Mail
            
    $this -> addElement ('text''email', array (
                                 
    'label'    => 'E-Mail:',
                                 
    'required' => true 
                                 
    )                            
                                );
                                
            
    //erzeugen des Submit-Button
            
    $this -> addElement ('submit''send', array (
                                 
    'label' => 'senden'
                                 
    )                            
                                );
        }
    Danke schon mal im voraus!

  2. Aktuelles Zend Framework Stellenangebot


    Webprogrammierer(in)
    von ZAPITANO GmbH

    Details ansehen
  3. #2
    Erfahrener Benutzer
    Registriert seit
    28.12.2006
    Beiträge
    9.966
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Wo is das Problem?

  4. #3
    Erfahrener Benutzer
    Registriert seit
    10.09.2007
    Ort
    Wuppertal
    Beiträge
    5.725
    Thanks
    1
    Thanked 39 Times in 39 Posts

    Standard

    Uff, das Frage ich mich auch. Liefert echo keine Daten? Oder wird in dem gerenderten Formular nichts angezeigt?
    Neues Projekt: zandman.de - Status: WIP




  5. #4
    Benutzer
    Registriert seit
    12.05.2008
    Ort
    Leipzig
    Beiträge
    91
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Nein, wenn ich es richtig verstehe, dann sollte doch die Zeile:
    PHP-Code:
    echo $values $form -> getValue ('name'); 
    die Daten anzeigen, welche im gleichnamigen Input eingegeben wurden. Das aber nur, wenn das Fromular per method=post versandt wurde und die Daten valide sind. Richtig? Allerdings zeigt er mir nichts an, nur eine leere Seite.

  6. #5
    Erfahrener Benutzer
    Registriert seit
    28.12.2006
    Beiträge
    9.966
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Das aber nur, wenn das Fromular per method=post versandt wurde und die Daten valide sind. Richtig?
    Ich seh nirgends, dass du die POST-Daten übergibst und validierst.

    Edit:
    Ah, da
    Mach mal nen Dump

  7. #6
    Erfahrener Benutzer
    Registriert seit
    10.08.2007
    Beiträge
    822
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Für mich hört sich das eher nach einem auftretenden PHP-Fehler an, wobei das Errorreporting abgeschalten ist:

    Zitat Zitat von tomparis Beitrag anzeigen
    [...]Allerdings zeigt er mir nichts an, nur eine leere Seite.

  8. #7
    Benutzer
    Registriert seit
    12.05.2008
    Ort
    Leipzig
    Beiträge
    91
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Okay, ich habe ganz einfach mal folgendes gemacht: Mehrmals die Seite neu geladen und siehe da Plötzlich zeigte er genau die Daten, welche ich vorher ins Formular eingegeben hatte.
    Soweit wäre dieses Problem beseitigt. Jetzt stelle ich mir aber die nächste Frage:
    Ich habe doch die Felder als required angegeben. Wenn ich die nun leer lasse, sollte er doch eine Standardfehlermeldung bringen, dass diese Felder ausgefüllt werden müssen.
    Ich habe schon eine Menge an Beschreibungen und Tutorials im Netz gefunden. Aber anstatt meine Fragen zu klären, werfen die alle nur noch mehr auf und ich verstehe im Moment nur noch Bahnhof.
    Kann mir eventuell jemand eine Seite nennen in der das ganze so Schritt für Schritt
    und immer schön der Reihe nach erklärt wird? Oder kann mir von euch jemand diesbezüglich ein bisschen auf die Sprünge helfen?
    Danke!

    Was mir eben gerade noch aufgefallen ist, es werden die Eingaben nur angezeigt, wenn in beide Felder etwas eingetragen wird.
    ist ein Feld leer, bekomme ich gar nichts angezeigt. Komisch ...
    Geändert von tomparis (20.02.2010 um 12:32 Uhr)

  9. #8
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    4.487
    Thanks
    1
    Thanked 125 Times in 121 Posts

    Standard

    Zitat Zitat von tomparis
    Ich habe schon eine Menge an Beschreibungen und Tutorials im Netz gefunden. Aber anstatt meine Fragen zu klären, werfen die alle nur noch mehr auf und ich verstehe im Moment nur noch Bahnhof.
    Kann mir eventuell jemand eine Seite nennen in der das ganze so Schritt für Schritt
    und immer schön der Reihe nach erklärt wird? Oder kann mir von euch jemand diesbezüglich ein bisschen auf die Sprünge helfen?
    Danke!
    Wenn ich mir deine beide Aktionen im Kontroller anschaue (übrigens ist der if-Konstrukt total schei*e zu lesen!), denn ist klar warum du ein unerwartetes Ergebnis erhälst. Nimm eine Aktion dafür, dann sollte mal deine Aktion „senden“ ohne vorherigen Formularversand aufgerufen werden, dann ist deine Seite ganz klar leer!
    Zitat Zitat von tomparis
    Komisch ...
    Es hängt also nicht am Zend Framework oder das du gerade damit anfängst, es liegt alleine deiner if-Schachtelei!
    Zum Zend Framework stehen jedem folgende fünf Quellen zum Nachschlagen zur Verfügung:

  10. #9
    Erfahrener Benutzer Avatar von ice-breaker
    Registriert seit
    29.03.2008
    Ort
    Steinbach/Taunus
    Beiträge
    1.859
    Thanks
    0
    Thanked 3 Times in 3 Posts

    Standard

    Wenn dein Form nicht valid ist, wird die Description in dein Formular eingetragen, bis hierhin vollkommen ok.
    Nun ist aber der If-Block zu Ende und du überschreibst das Formular-Objekt mit einem neuen, so verschwinden natürlich alle Fehlermeldungen, es müsste so aussehen:
    PHP-Code:
    public function sendenAction() {
      
    $form = new KontaktForm();
      if(
    $this->getRequest()->isPost()) {
        
    //prüfen ob Daten gültig sind
        
    if($form->isValid($this->getRequest()->getPost())) {
          echo 
    $values $form->getValue('name');
        } else {
          
    $form->setDescription('fehler');
        }
      }

      
    $this->view->form $form;

    "Die Wahrheit entgeht dem, der nicht mit beiden Augen sieht." -Orici

  11. #10
    Benutzer
    Registriert seit
    12.05.2008
    Ort
    Leipzig
    Beiträge
    91
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Ich habe mal ein paar Änderungen, wie empfohlen, durchgeführt. Hier ist erstmal der Code:
    PHP-Code:
    public function sendenAction ()
        {
            
    //erstellen eines Formular-Objektes
            
    $form = new KontaktForm ();    
            
            if (
    $this -> getRequest () -> isPost() )
            {            
            
    //prüfen ob Daten gültig sind
                
    if ($form -> isValid ($this -> getRequest () -> getPost () ) )
                {            
                    echo 
    $values $form -> getValue ('name');
                    echo 
    $values $form -> getValue ('email');
                }
                else
                {
                    
    $form -> setDescription ('fehler');
                    
    $this -> view -> form $form;
                }
                
            }
            
    //Ausgabe des Formular-Objektes
            
    $this -> view -> form $form;
        } 
    @Kaiuwe: Ich hoffe der if-Konstrukt ist nun besser lesbar

    Rufe ich die Methode senden direkt auf, so erhalte ich eine leere Seite. Normalerweise sollte es doch aber so sein, das ich eine Fehlermeldung bekomme und das Formular angezeigt wird. Oder sehe ich das falsch? Zumindest habe ich das in der "normalen" prozeduralen Programmierung immer so gemacht.
    Außerdem bekomme ich nur etwas angezeigt, wenn beide Felder ausgefüllt sind. Ist eins von beiden leer, dann kommt auch eine leere Seite. Beide Felder sind als required => true gekennzeichnet.

    Edit:
    Okay, ich denke den Fehler gefunden zu haben: Ich habe vergessen in das Template senden.phtm die Ausgabe des Formulars einzutragen. Somit passiert genau das was es soll und ich komme erstmal weiter.
    Geändert von tomparis (20.02.2010 um 15:41 Uhr)

Ähnliche Themen

  1. Fehlermeldung verarbeiten
    Von anno im Forum Formulare
    Antworten: 7
    Letzter Beitrag: 28.11.2009, 20:56
  2. Übergebene ID verarbeiten
    Von HeinzHarald im Forum MVC
    Antworten: 13
    Letzter Beitrag: 01.10.2009, 09:56
  3. Probleme beim verarbeiten von utc-timecode
    Von Marco im Forum Lokalisierung & Internationalisierung
    Antworten: 5
    Letzter Beitrag: 12.05.2008, 12:41
  4. Exception richtig verarbeiten
    Von maffei im Forum Einsteigerfragen
    Antworten: 2
    Letzter Beitrag: 26.01.2008, 09:31
  5. Suche verarbeiten
    Von Doc Olson im Forum Einsteigerfragen
    Antworten: 3
    Letzter Beitrag: 06.01.2008, 16:36

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •