2009-03-20 17 views
12

Qualcuno ha un'idea di come creare semplicemente un modulo con Zend_Form e jquery? Voglio utilizzare Zend_Form per convalidare il modulo in modo da non dover duplicare il modulo in JavaScript e PHP.Modulo Zend Framework con jquery

Grazie,

Ivo Trompert

risposta

10

Nessun problema.

Aggiungi ZendX_JQuery al catalogo se si utilizza il caricamento automatico.

Quindi estendere ZendX_JQuery_Form alle proprie esigenze. Fai le tue cose nel metodo init() della tua classe.

Per esempio, sono stato in grado di creare un campo di completamento automatico che ha la convalida regolare Zend_Form più comportamento JQuery come questo:

$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, 
    ) 
); 

Poi ho anche cambiato i decoratori di default come questo:

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

E infine aggiungi al mio modulo (ricorda che sono in init() quindi lo indirizzerò via $ this):

$this->addElement($elem); 

Eccoti, la magia è finita.

PS: non dimenticare di aggiungere quanto segue nel bootstrap:

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

Fate attenzione che - ZendX verrà eliminato e non sarà più supportato. – MEM

+0

@MEM: collegamento sorgente? – 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

Beh, Zend_Form non genererà alcun JavaScript lato client validatori per voi, se è questo che vuoi dire.

MA: È sufficiente eseguire tutte le convalida sul server e utilizzare jQuery per collegarsi agli eventi di modifica dei campi e per AJAX-ify la convalida del modulo.

Controllare that per un campione.