2009-03-20 34 views
12

Bất kỳ một ý tưởng nào chỉ đơn giản là tạo một biểu mẫu với Zend_Form và jquery? Tôi muốn sử dụng Zend_Form để xác thực biểu mẫu vì vậy tôi không phải viết kịch bản lệnh kép trong JavaScript và PHP.Mẫu Zend Framework với jquery

Cảm ơn bạn,

Ivo Trompert

Trả lời

10

Không sao cả.

Thêm ZendX_JQuery vào thư viện của bạn nếu bạn sử dụng tự động tải.

Sau đó, mở rộng ZendX_JQuery_Form theo nhu cầu của bạn. Thực hiện công cụ của bạn theo phương thức init() của lớp học.

Ví dụ, tôi đã có thể tạo ra một lĩnh vực AutoComplete trong đó có xác nhận thường xuyên Zend_Form cộng hành vi JQuery như thế này:

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

Sau đó, tôi thậm chí đã thay đổi trang trí mặc định như thế này:

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

Và cuối cùng thêm vào biểu mẫu của tôi (nhớ tôi đang ở init() vì vậy tôi sẽ giải quyết nó qua $ this):

$this->addElement($elem); 

Có bạn đang có, sự kỳ diệu được thực hiện.

PS: đừng quên để thêm sau trong bootstrap của bạn:

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

hãy coi chừng - ZendX sẽ bị xóa và sẽ không còn được hỗ trợ nữa. – MEM

+0

@MEM: Liên kết nguồn? – 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

Vâng, Zend_Form sẽ không tạo ra bất kỳ client-side JavaScript xác nhận cho bạn, nếu đó là những gì bạn có ý nghĩa.

NHƯNG: Bạn chỉ có thể thực hiện tất cả xác thực trên máy chủ và sử dụng jQuery để móc vào các sự kiện thay đổi của trường và để AJAX-ify xác nhận biểu mẫu.

Kiểm tra that để lấy mẫu.