Start der Rückrunde

Heute mal was anderes. Ich freu mich einfach nur den Start der Bundesliga Rückrunde. Für mich als Ruhrpott-Kind sieht es ja ganz gut aus, so viele Clubs aus dem Sektor mischen oben mit. Als eingefleischter BVB Fan drücke ich den Fohlen aus Gladbach heute die Daumen und hoffe, dass Sie das Spiel 2:0 gewinnen, was auch meiner Platzierung beim Tipp-Kick entgegen kommen würde. Hauptsache die Bayern verlieren drei Punkte und Dortmund gewinnt am Sonntag 3:1 in Hamburg.

Heya BVB.

Zend Server endlich auch für Mac OS X

Endlich gibt es den Zend Server (Version 5.6) auch nativ für Mac OS X.

Wenn man, wie ich, auf einem Mac entwickelt, musste man sich immer mit der doch recht ätzenden Installation des Zend Servers für den Mac herumplagen. Ich glaube, ich habe beim ersten Mal locker drei Versuche benötigt, bis ich eine vernünftige Installation hinter mich gebracht habe.

Hier geht es zum Download: Zend Server

Zend Forms mit Ajax versenden

Im Netz gibt es ja zahlreiche Artikel zu Zend Forms und wie man diese mit Ajax validiert. Eigentlich alle Treffe via Google, die ich gefunden habe, basieren auf die selbe Lösung und exemplarisch dafür möchte ich hier nur auf eine mögliche Seite, die sich diesem Thema annimmt, verweisen: Ajaxify your Zend Form, validation with jquery.

Da eigentlich alle Seiten die gleichen Codefragmente verwendet haben und man hier noch einen ausführlichen Webcast dazu bekommt, hat mir das Tutorial bei Zendcast zu diesem Thema am besten gefallen. Der Vorteil bei dieser Art der Validierung liegt auf der Hand, das Zend Framework nimmt einem jegliche Programmierung bei der eigentlichen Validierung ab und noch wichtiger, die Validierung an sich bleibt Server-Seitig. Leider fand ich nirgends einen Hinweis darauf, wie man die Form, nach erfolgreicher Validierung dann doch abschicken kann. Viele fragten auf einschlägigen Seiten nach, oft gab es aber nur die Antwort darauf, wie man ein automatisches Submit der Form bei erfolgreicher Validierung verhindert.

Als erstes muss man ganz klassisch eine Form mit Hilfe von Zend_Form definieren.

Natürlich sollte hier mindestes ein Pflichtfeld vergeben sein, sonst gibt es nichts zu validieren und das Formular kann immer versendet werden. In diesem Beispiel ist es das E-Mail Feld $email->setRequired(true);. Jetzt benötigt man noch den Controller und die View, schließlich möchte man das Formular ja sehen und falls es valide ist, soll ja irgendwas mit der Eingabe geschehen.

Der Controller sieht vorerst so aus und macht erst einmal nichts weiter als das Formular anzuzeigen:

Die zugehörige View könnte dann zum Beispiel so aussehen:

Oder einfacher (je nachdem, wie flexibel man beim Layout seien muss oder möchte):

Als nächstes kommt dann noch, wie bei ZendCast vorgeführt die eigentliche Validierung via Ajax und dem Serverseitigen Mechanismus, der durch Zend Form zur Verfügung gestellt wird. Hierzu werden einige kurze Javascript Funktionen benötigt, die sich in der entsprechenden View befinden und schnell erstellt sind. Ferner werden die Pflichtfelder bereits bei der Eingabe überprüft (.blur()). Das ganze könnte dann ungefähr so aussehen:

Es gibt, wie man sehen kann, zwei Funktionen für die Validierung. Zum einen, wie bei den ganzen anderen Tutorials die Funktion doValidation(). Hier wird jedes Feld direkt bei der Eingabe überprüft und sofort das entsprechende Feld mit einer Fehlermeldung markiert, bzw. diese Markierung wieder entfernt, sobald das Feld valide ist. Da man aber sicher nicht schon bei der Eingabe eines an sich validen Formulars dieses automatisch absenden möchte, da vielleicht die Felder, die nicht validiert werden, fertig ausgefüllt sind oder man seine Eingabe noch ändern möchte, habe ich eine zweite, angepasste Funktion (doValidationAll()) implementiert, die zum einen das valide Formular absendet und zum anderen alle Felder gleichzeitig beim drücken des Submit Buttons validiert und entsprechende Fehlermeldungen positioniert. Gleichzeitig ist dieser Teil auch dafür zuständig, alle Daten des validen Formulars an den Controller weiter zu reichen, um dann hier die Daten zu verarbeiten.

Man könnte das ganze sicher noch vereinfachen und vor allem bei Erfolg einen leeren JSON-String zurück geben und anschließend auf einen leeren String testen und so ein paar Zeilen sparen. Sicher könnte man auch aus zwei Controllern nur einen machen, aber das sind dann Feinheiten für das Refactoring.

Jedenfalls hat mit genau dieser Teil bei meiner Suche im Netz gefehlt. Vielleicht hilft es ja Jemandem.

Frohes neues!

Ich wünsche Euch allen da draussen eine frohes neues Jahr. Ich bin mal gespannt, was die Webtrends des Jahres 2012 werden und wie sich Google+ im Vergleich zu Facebook entwickeln wird. Ich muss zugeben, dass ich mich derzeit wesentlich seltener bei Google+ als bei Facebook rumtreibe, was wohl daran liegt, das die meisten meiner aktiven Kontakte noch nicht gewechselt haben und wenn doch, dann G+ kaum nutzen.

Und so langsam sollte ich mich um schon relativ großes Schlafdefizit im noch jungen Jahr kümmern.