2009-03-20 8 views
12

Dowolny pomysł, jak po prostu utworzyć formularz z Zend_Form i jquery? Chcę użyć Zend_Form do sprawdzenia poprawności formularza, więc nie muszę podwójnie skryptować formularza w JavaScript i PHP.Formularz Zend Framework z jquery

Dziękuję

Ivo Trompert

Odpowiedz

10

Nie ma problemu.

Dodaj ZendX_JQuery do biblioteki, jeśli używasz autoload.

Następnie należy rozszerzyć ZendX_JQuery_Form do swoich potrzeb. Zrób swoje rzeczy w metodzie init() swojej klasy.

Na przykład, byłem w stanie stworzyć pole autouzupełniania, która ma regularne sprawdzanie Zend_Form plusa zachowanie JQuery takiego:

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

Wtedy nawet zmienił domyślnych dekoratorów tak:

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

I na koniec dodaj do mojej postaci (pamiętaj, że jestem w init(), więc adresuję to za pomocą $ this):

$this->addElement($elem); 

Tam jesteś, magia jest zrobiona.

PS: Nie zapomnij dodać następujące w bootstrap:

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

Proszę strzeżcie to - ZendX zostanie odrzucony i nie będzie już wspierany. – MEM

+0

@MEM: Link źródła? – 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

No Zend_Form nie przyniesie żadnej stronie klienta JavaScript Walidatory dla ciebie, jeśli o to ci chodzi.

ALE: Możesz po prostu wykonać całą walidację na serwerze i użyć jQuery do przechwytywania zdarzeń zmian pól, a do AJAX-potwierdzenia walidacji formularza.

Sprawdzić próbkę na that.