• 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

Tutorial: „A Zend Framwork compound form element for dates“

zowo

New member
Hallo!

Ich habe eine Frage zu dem Tutorial von Rob Allen!

Bin nach der Anleitung vorgegangen und die selbe Struktur bzw. die Files auch in meiner Applikation angelegt. Das einzige Problem, dass bei mir jz auftritt ist, dass die Methden isValid bzw. getValue aus der Date.php nicht aufgerufen werden.

Bei meinem Registrierungsformular wird deshalb ein Array mit Day,Month,Year an die Datenbank übergeben und diese meldet mir dann Invalid Type ... da die DB ja einen String vom Type Date erwartet.

Wenn ich es richtig verstanden habe, kümmern sich aber genau die beiden o.a. Methoden um die Transformation des Form-Elements von einem Array zu einem String.

Wie kann ich auf diese Methoden zugreifen? In meiner registerAction im Indexcontroller habe ich z.B. folgendes versucht:

Code:
$formData['birthdate'] = $this->_helper->formDate->isValid($formData['birthdate']);
erhalte dann aber folgende Fehlermeldung:

Message: Action Helper by name FormDate not found
Auch der Eintrag des Plugins in der application.ini mit
Code:
; define plugin folder
autoloadernamespaces[] = "App_"
pluginPaths.App_Resource = APPLICATION_PATH "/../library/App/Resource"
ändert nichts, daran dass die Funktion bzw. der Helper nicht gefunden wird. Muss ich eventuell irgendwo noch ein Objekt der Klasse instanziieren um auf den Helper zugreifen zu können?
 

crash

New member
View Helper != Action-Helper

$deinForm->namedesDateElements->getValue() müsste von daher reichen. Bitte mal das Manual bezüglich Zend_Form und besonders zu Decoratoren lesen.
 

zowo

New member
Hallo danke für die Antwort, aber anscheinend liegt es nicht am Aufruf ... hab jz folgendes versucht

Code:
$formData['birthdate'] = $registration_form->birthdate->getValue($formData['birthdate']);
die Funktion wird trotzdem nicht aufgerufen. Eventuell stimmt etwas mit der application.ini nicht?

Hat jemand eine Idee, ich bekomme auch leider kein Feedback von der Application.
 

crash

New member
Ist „birthdate“ jetzt ein SubForm, eine Displaygroup oder ein Element?

In keinem der Fälle hat der Parameter in getValue() Sinn. Bei isValid() und populate() sind die Values nämlich schon da.
 

zowo

New member
"birthdate" ist ein Element welches in einem Form dargestellt wird ... dafür gibt es die Klasse App_Form_Element_Date extends Zend_Form_Element_Xhtml

Darin gibt es eben getValue() und isValid() und wenn ich mir getValue() so ansehe, sieht die Funktion für mich so aus, dass darin das "birthdate"-array wieder zu einem String umgewandelt wird um es für die DB verträglich zu machen ... nur leider wird getValue nie aufgerufen oder übergebe ich eventuell auch einen falschen Wert, aber meiner Meinung nach übergebe ich mit $formData['birthdate'] --> das Array aus dem Formular, wenn ich beispielsweise das Formular abschicke, erscheint ja die Meldung dass das Feld in der DB keinen Array aufnehmen kann, das komplette Objekt welches in die DB geschrieben werden sollte wird dabei auch ausgegeben und dort wird birthdate auch als Array ausgegeben.

ich bin mir nicht sicher, aber wenn ich an der o.a. Stelle in meiner registerAction die getValue()-Methode wirklich aufrufen könnte, sollte sich das Problem erübrigen
 
Oben