<from ...> <input ...> <div id = "error _..."> Here we will display a message stating that the field failed validation. </ div> </ form> <div id = ""> Here we will display a response from the server <div> <script> Here is the form processing code. </ script>
class App_Form_Decorator_Ajax extends Zend_Form_Decorator_Abstract { public function getJSCode () { $ form = $ this-> getElement (); $ button = $ form-> getElement ('submit'); $ jsCode = ' <div id = "check '. $ form-> getAttrib (' id ').'"> </ div> <script> $ ("# '. $ button-> getAttrib (' id ').'"). click (function () { data = $ ("# '. $ form-> getAttrib (' id ').'"). serialize (); $ .ajax ({ type: "'. $ form-> getMethod ().'", url: "'. $ form-> getAction ().'", data: data, success: function (msg) { $ ("# check '. $ form-> getAttrib (' id ').'"). html (msg) } }); return false; }); </ script> '; return $ jsCode; } public function render ($ content) { $ element = $ this-> getElement (); if (null === $ element-> getView ()) { return $ content; } $ placement = $ this-> getPlacement (); switch ($ placement) { case 'APPEND': return $ content. $ this-> getJSCode (); case 'PREPEND': return $ this-> getJSCode (). $ content; case null: default: return $ content. $ this-> getJSCode (); } } }
class App_Form_Decorator_AjaxErrors extends Zend_Form_Decorator_Abstract { public function _getHtmlCode () { $ element = $ this-> getElement (); $ HtmlCode = ' <div id = "error_ '. $ element-> getName ().'"> </ div> '; return $ HtmlCode; } public function render ($ content) { $ element = $ this-> getElement (); if (! $ element instanceof Zend_Form_Element) { return $ content; } if (null === $ element-> getView ()) { return $ content; } $ placement = $ this-> getPlacement (); switch ($ placement) { case 'APPEND': return $ content. $ this -> _ getHtmlCode (); case 'PREPEND': return $ this -> _ getHtmlCode (). $ content; case null: default: return $ content. $ this -> _ getHtmlCode (); } } }
class App_Form extends Zend_Form { public function init () { // Call the parent method parent :: init (); // Create a translator object, we need it to translate error messages. // As an adapter php array is used $ translator = new Zend_Translate ('array', './application/translate/errors.php'); // Set the translator object for the form $ this-> setTranslator ($ translator); / * Set prefixes for samopisny elements, validators, filters and decorators. Thanks to this Zend_Form will know where to look for our hand-written elements * / $ this-> addElementPrefixPath ('App_Validate', 'App / Validate /', 'validate'); $ this-> addElementPrefixPath ('App_Filter', 'App / Filter /', 'filter'); $ this-> addElementPrefixPath ('App_Form_Decorator', 'App / Form / Decorator /', 'decorator'); } public function printErrorMessages () { echo '<script>'; foreach ($ this-> getElements () as $ element) { $ errors = ""; foreach ($ element-> getMessages () as $ error) { $ errors. = $ error. "<br>"; } echo '$ ("# error_'. $ element-> getName (). '") .html ("'. $ errors. '");'; } echo '</ script>'; } }
class Form_Comment extends App_Form { public $ action = '/ index / add /'; public function init () { parent :: init (); $ helper = new Zend_View_Helper_Url (); $ this-> setMethod ('POST'); $ this-> setAction ('/ index / add /'); $ this-> setAttrib ('id', 'commentform'); $ login = new Zend_Form_Element_Text ( 'login', array ( 'label' => 'Name', 'required' => true 'filters' => array ('StringTrim') )) $ login-> addDecorator ('AjaxErrors'); $ this-> addElement ($ login); $ message = new Zend_Form_Element_Textarea ( 'message', array ( 'label' => 'Cooperative', 'required' => true )) $ message-> addDecorator ('AjaxErrors'); $ this-> addElement ($ message); $ submit = new Zend_Form_Element_Submit ('submit', array ( 'label' => 'Add a comment', 'id' => 'qwer' )) $ this-> addElement ($ submit); } }
function indexAction () { $ commentForm = new Form_Comment (); $ this-> view-> commentForm = $ commentForm; $ commentForm-> addDecorator (new App_Form_Decorator_Ajax ()); }
function addAction () { $ commentForm = new Form_Comment (); if ($ this-> getRequest () -> isXmlHttpRequest ()) { if ($ this -> _ request-> isPost ()) { if ($ commentForm-> isValid ($ this -> _ getAllParams ())) { echo $ commentForm-> getValue ('login'). "<br>"; echo $ commentForm-> getValue ('message'); } else { $ commentForm-> printErrorMessages (); } } } else { echo "Please enable javascript in your browser"; } }
Source: https://habr.com/ru/post/52675/
All Articles