turk porno porno escort rokettube
Ergebnis 1 bis 13 von 13

Thema: "$form->isValid($_POST)" gibt true trotz "required=true" und "allowEmpty=false"

  1. #1
    Benutzer Avatar von Nedjem
    Registriert seit
    16.04.2008
    Beiträge
    30
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard "$form->isValid($_POST)" gibt true trotz "required=true" und "allowEmpty=false"

    Aloha,

    bin gerade dabei ein Formular zu erstellen und zu validieren. Erstellt ist es und es wird auch abgeschickt, doch das "$form->isValid($_POST)" gibt true zurück obwohl für alle Elemente des Formulars required auf true und allowEmpty auf false stehen.

    Hier der Code meiner Form:
    PHP-Code:
     $form = new Zend_Form();
            
    $form->setAction('base/parseBase')
                    ->
    setMethod('post')
                    ->
    setAttrib('id''base');

            
    $form->addElement('text','Feld1', array('label' =>'Feld1'
                                               
    'validators' => array('stringlength'), 
                                               
    'allowEmpty' => false
                                               
    'required' => true));

            
    $form->addElement('text','Feld2', array('label' => 'Feld2'
                                               
    'allowEmpty' => false
                                               
    'required' => true));

            return 
    $form
    Hier die Abfrage nach der Validierung:
    PHP-Code:
            if (!$this->getRequest()->isPost()) {
                return 
    $this->_forward('base');
            }
            
            
    $form $this->getBaseForm();
            if (!
    $form->isValid($_POST)) {
                
    // Fehlgeschlagene Prüfung; Form wieder anzeigen
                
    $this->form $form;
                die( 
    "Fehler");
                return 
    $this->render('base');
            }
            
            die(
    "kein Fehler???");
            
    $values $form->getValues();
            
    // Jetzt versuchen zu Authentifizieren...
            
    $this->render('base'); 
    Weiß vielleicht jemand, warum hier kein Fehler angezeigt wird, obwohl die Felder beim Abschicken leer sind? ... Was hab ich vergessen oder falsch gemacht habe?

    LG
    *

  2. #2
    Benutzer Avatar von Nedjem
    Registriert seit
    16.04.2008
    Beiträge
    30
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Ha, hab rausgefunden was falsch war, einfach 'NotEmpty' zu den Validatoren hinzufügen:
    PHP-Code:
    $form->addElement('text','Feld1', array('label' =>'Feld1'
                                               
    'validators' => array('NotEmpty'), 
                                               
    'required' => true)); 
    Ach ja und "'allowEmpty' => false" kann man dan auch weglassen oder hat das noch irgendeine Funktion?

    LG
    *
    Geändert von Nedjem (16.04.2008 um 15:21 Uhr)
    __________________________________
    Kaum macht mans richtig, schon funktionierts!

  3. #3
    Erfahrener Benutzer
    Registriert seit
    19.08.2007
    Ort
    Berlin
    Beiträge
    188
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Ja, das kannst du weglassen. Das Verhalten von Zend_Form wundert mich trotzdem. Wenn ein Feld als required eingestuft wurde, sollte automatisch autoInsertNotEmptyValidator() greifen und den Validator selbst dazupacken.

  4. #4
    Benutzer Avatar von Nedjem
    Registriert seit
    16.04.2008
    Beiträge
    30
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Ja, ich war auch der Meinung, dass das reicht, dann hab ich ein wenig gegoogelt und in der Doku nachgelesen und "allowEmpty" auf false gesetzt und es ging immer noch nicht...

    Jetzt kann ich zwar abfragen, dass die Form nicht valid ist, aber weißt du zufällig auch, wie ich eigene Fehlermeldungen danach anzeige? Ich mein die Fehlermeldungen aus "$form->getMessages();" sind zwar nicht schlecht, aber ebend auf Englisch ...

    Gibt es evtl. soetwas wie "$form->element->validator->setErrorMessage("")"?

    LG
    *
    __________________________________
    Kaum macht mans richtig, schon funktionierts!

  5. #5
    Erfahrener Benutzer
    Registriert seit
    19.08.2007
    Ort
    Berlin
    Beiträge
    188
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Ich mein die Fehlermeldungen aus "$form->getMessages();" sind zwar nicht schlecht, aber ebend auf Englisch
    Die Fehlermeldungen werden automatisch auch durch Zend_Translate gejagt. Wenn es also nur darum geht, dass du sie übersetzt haben willst, kannst du sie einfach mit in deine Sprachdateien aufnehmen (Die Fehlermeldungen sollten alle im Handbuch stehen, kA ob das mittlerweile gemacht wurde).

    Wenn du komplett eigene MEldungen willst, schau mal hier: http://zfforum.de/showthread.php?t=1...ehlermeldungen

  6. #6
    Benutzer Avatar von Nedjem
    Registriert seit
    16.04.2008
    Beiträge
    30
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    oh, übersetzen reicht. Wie sprech ich denn da die Fehlermeldungen an?
    normal heißt es ja:
    "$this->layout()->translate->_("Stichwort");" und er sucht danach in 2 verschiedenen csv-Dateien(de und en) nach dem "Stichwort" ("Stichwort;Das ist der deutsche Text." bzw. "Stichwort;This is the english text.") ... oder ist das was anderes? *verwirr*

    -> Hab das jeztzt mal mit "isEmpty;Öh, das is leer!" getestet (in de.csv) und es wird mir leider nix anderes angezeigt... irgendwo in der Zend-Dokumentation steht ich soll die Konstanten der Fehlercodes dazu benutzen... nur welche sind das, wenn nicht das http://framework.zend.com/apidoc/cor....html#IS_EMPTY?

    LG
    *
    Geändert von Nedjem (16.04.2008 um 17:57 Uhr)
    __________________________________
    Kaum macht mans richtig, schon funktionierts!

  7. #7
    Benutzer Avatar von Nedjem
    Registriert seit
    16.04.2008
    Beiträge
    30
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard Aha Die Lösung

    Aha, Fehler gefunden:

    PHP-Code:
    $translate = new Zend_Translate('csv'$translation_file'de');
    $registry->set('Zend_Translate'$translate); 
    funktioniert bei mir nicht (warum auch immer), ich musste explizit für die Form folgendes schreiben:
    PHP-Code:
    // ==========  im index.php ========== 
    ...

    $translate = new Zend_Translate('csv'$translation_file'de');
    $registry->set('translate'$translate);

    ...

    // ========== dort wo die Form erstellt wird:  ========== 
    // Form erstellen    
    $form = new Zend_Form();
    //Translator aktivieren
    $translator Zend_Registry::get('translate');
    $form->setTranslator($translator->getAdapter());

    ... 
    Hinweis: ein Adapter muss übergeben werden kein Zend_Translate-Objekt!

    Ach ja und die Keys die in die Übersetzungsdateien rein müssen sind Tatsächlich die Indizeeeeees aus dem "$form->getMessages()"-Array zurückkommen.

    Beispiel:
    HTML-Code:
    Array
    (
        [name] => Array
            (
                [isEmpty] => Value is empty, but a non-empty value is required
            )
    
        [min_number] => Array
            (
                [isEmpty] => Value is empty, but a non-empty value is required
                [notInt] => '' does not appear to be an integer
            )
    
        [start] => Array
            (
                [dateNotYYYY-MM-DD] => '' is not of the format YYYY-MM-DD
                [isEmpty] => Value is empty, but a non-empty value is required
            )
    
        [end] => Array
            (
                [dateNotYYYY-MM-DD] => '' is not of the format YYYY-MM-DD
                [isEmpty] => Value is empty, but a non-empty value is required
            )
    
    )
    Hier also "isEmpty", "dateNotYYYY-MM-DD" und "notInt".

    Was mir noch aufgefallen ist:
    Wenn man "alnum" als Validator benutzt braucht man zusätzlich zu/anstatt dem Key "isEmpty" den Key "stringEmpty". Wobei es für mich allerdings das selbe ist und nur Sinn macht, wenn "NotEmpty" nicht gesetzt ist ... und dann ist es doch eigentlich auch egal, weils ja eigentlich dann leer sein darf ... Komisch. Was hat das also für einen Zweck?

    LG
    *
    Geändert von Nedjem (17.04.2008 um 11:32 Uhr)
    __________________________________
    Kaum macht mans richtig, schon funktionierts!

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

    Standard

    Hinweis: ein Adapter muss übergeben werden kein Zend_Translate-Objekt!
    Nein. Übergibt man ein Zend_Translate-Objekt, holt er sich aus eben diesem den Adapter selbst.
    PHP-Code:
        public function setTranslator($translator null)
        {
            if (
    null === $translator) {
                
    $this->_translator null;
            } elseif (
    $translator instanceof Zend_Translate_Adapter) {
                
    $this->_translator $translator;
            } elseif (
    $translator instanceof Zend_Translate) {
                
    $this->_translator $translator->getAdapter();
            } else {
                require_once 
    'Zend/Form/Exception.php';
                throw new 
    Zend_Form_Exception('Invalid translator specified');
            }

            return 
    $this;
        } 

  9. #9
    Benutzer Avatar von Nedjem
    Registriert seit
    16.04.2008
    Beiträge
    30
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    gut und warum bekomm ich diesen Fehler, wenn ich nur "$translate" übergebe:
    PHP-Code:
    Catchable fatal errorArgument 1 passed to Zend_Form::setTranslator() must be an instance of Zend_Translate_Adapterinstance of Zend_Translate givencalled in... 
    ?

    LG
    *
    __________________________________
    Kaum macht mans richtig, schon funktionierts!

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

    Standard

    kA, ich kenne deine Version nicht

  11. #11
    Benutzer Avatar von Nedjem
    Registriert seit
    16.04.2008
    Beiträge
    30
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Achso ... Zend Framework Preview Release 1.5 (revision 7636). Released on
    2008-01-25. (laut README.txt)
    __________________________________
    Kaum macht mans richtig, schon funktionierts!

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

    Standard

    Öhm ...
    Zend Framework Preview Release 1.5 (revision 7636)
    Mal abgesehen davon, dass bereits Version 1.5.1 verfügbar ist, wird immer wieder betont, dass "Preview Release" nicht für den Produktiveinsatz verwendet werden sollte
    Auch wenn du nicht 1.5.1 verwenden willst, solltest du zumindest auf 1.5 Final aktualisieren.

    Edit:
    Kurz nachgeschaut. In der Final muss nicht mehr zwingend ein Adapter übergeben werden.

  13. #13
    Benutzer Avatar von Nedjem
    Registriert seit
    16.04.2008
    Beiträge
    30
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    ehm ... hehe, DANKE! ... jab, gute Idee ich hoffe, dann gibt es mit dem bisherig Programmierten keine Probleme ?
    __________________________________
    Kaum macht mans richtig, schon funktionierts!

Ähnliche Themen

  1. Routing von "/" nach "/public"?
    Von echinus im Forum MVC
    Antworten: 9
    Letzter Beitrag: 27.01.2009, 11:22
  2. Antworten: 25
    Letzter Beitrag: 02.05.2008, 18:11
  3. google base: Deutscher API "Feed" Call + Bild einfügen
    Von thE_iNviNciblE im Forum Web & Webservices
    Antworten: 1
    Letzter Beitrag: 18.03.2008, 22:00
  4. Antworten: 2
    Letzter Beitrag: 23.11.2007, 21:54
  5. Antworten: 2
    Letzter Beitrag: 13.09.2007, 13:05

Lesezeichen

Berechtigungen

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