2009-03-20 4 views
12

Quelqu'un peut-il simplement créer un formulaire avec Zend_Form et jquery? Je veux utiliser Zend_Form pour valider le formulaire, donc je n'ai pas besoin d'écrire deux fois le formulaire en JavaScript et PHP.Formulaire de Zend Framework avec jquery

Merci,

Ivo Trompert

Répondre

10

Aucun problème.

Ajoutez ZendX_JQuery à votre bibliothèque si vous utilisez le chargement automatique.

Ensuite, étendez ZendX_JQuery_Form à vos besoins. Faites vos choses dans la méthode init() de votre classe.

Par exemple, j'ai pu créer un champ de saisie semi qui a la validation régulière de Zend_Form ainsi que le comportement JQuery comme ceci:

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

Puis j'ai même changé les décorateurs par défaut comme celui-ci:

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

Et enfin ajouter à mon formulaire (rappelez-vous que je suis dans le init() donc je vais l'adresser via $ this):

$this->addElement($elem); 

Voilà, la magie est faite.

PS: ne pas oublier d'ajouter ce qui suit dans votre fichier de démarrage:

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

S'il vous plaît méfiez-vous cela - ZendX sera abandonné et ne sera plus supporté. – MEM

+0

@MEM: Lien de source? – 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

Eh bien, Zend_Form ne générera pas de côté client JavaScript validateurs pour vous, si c'est ce que vous voulez dire. MAIS: Vous pouvez simplement faire toute la validation sur le serveur, et utiliser jQuery pour vous connecter aux événements de changement des champs, et à AJAX-ify la validation du formulaire.

Vérifiez that pour un échantillon.