2009-03-20 17 views
12

Irgendeine Idee, wie man einfach ein Formular mit Zend_Form und jquery erstellt? Ich möchte Zend_Form verwenden, um das Formular zu validieren, damit ich das Formular in JavaScript und PHP nicht doppelt skripten muss.Zend Framework Formular mit jquery

Danke,

Ivo Trompert

Antwort

10

Kein Problem dort.

Fügen Sie ZendX_JQuery zu Ihrer Bibliothek hinzu, wenn Sie Autoload verwenden.

Dann erweitern Sie ZendX_JQuery_Form auf Ihre Bedürfnisse. Tun Sie Ihre Sachen in der Methode init() Ihrer Klasse.

Zum Beispiel konnte ich ein Auto-Vervollständigen-Feld schaffen, wie dies regelmäßig Zend_Form Validierung und JQuery Verhalten hat:

$elem = new ZendX_JQuery_Form_Element_AutoComplete(
    'query', 
    array('Label' => 'Search', 
      'required'=>true, 
      'filters'=>array('StripTags'), 
      'validators'=>array(
          array('validator'=>'StringLength', 
           'options'=>array('min'=>'3'), 
           'breakChainOnFailure'=>true 
           ), 
          array('Alnum') 
       ) 
     ) 
    ); 

$elem->setJQueryParams(array('data' => array(), 
    'url' => 'my_autocomplete_callback.php', 
    'minChars' => 1, 
    'onChangeInterval' => 500, 
    ) 
); 

Dann änderte ich auch Standardekoratoren wie folgt aus:

$elementDecorators = array(
    array('UiWidgetElement', array('tag' => '')), 
    array('Errors', array('tag' => 'div', 'class'=>'error')), 
    array('Label'), 
    array('HtmlTag', array('tag' => 'div')), 
); 
$elem->setDecorators($elementDecorators); 

und schließlich zu meiner Form hinzufügen (ich erinnere mich in der init bin(), so werde ich es über $ dieser Adresse):

$this->addElement($elem); 

Da bist du, die Magie ist getan.

PS: vergessen Sie nicht, die folgenden in der Bootstrap hinzuzufügen:

$view->addHelperPath('ZendX/JQuery/View/Helper/', 'ZendX_JQuery_View_Helper'); 
+1

Bitte beachten Sie, zu handhaben Das - ZendX wird fallen gelassen und wird nicht mehr unterstützt. – MEM

+0

@MEM: Quellenlink? – JCM

+1

@ Jonathan http://zend-framework-community.634137.n4.nabble.com/Discontinuing-Maintenance-of-ZendX-JQuery-Suggest-drop-for-2-0-td3221856.html – MEM

1

Nun, Zend_Form wird jeder Client-Seite nicht erzeugen JavaScript für Sie Validierer, wenn es das ist, was du meinst.

ABER: Sie können einfach alle Prüfungen auf dem Server durchführen und jQuery verwenden, um sich in die Änderungsereignisse der Felder einzuloggen, und AJAX-ify die Formularvalidierung.

Überprüfen Sie that für eine Probe.