2009-03-20 32 views
12

Zend_Formとjqueryを使用してフォームを作成する方法はありますか? Zend_Formを使用してフォームを検証し、JavaScriptとPHPでデュアルスクリプトを行う必要はありません。それはあなたが何を意味するかだ場合Zend Frameworkを使用したZend Frameworkフォーム

イヴォTrompert

答えて

10

問題はありません。

自動ロードを使用する場合は、ライブラリにZendX_JQueryを追加してください。

次に、ZendX_JQuery_Formを必要に応じて拡張します。 あなたのクラスのinit()メソッドであなたのものをしてください。

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

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

私もこのようなデフォルトのデコレータを変更:

は例えば、私はこのような定期的なZend_Formの検証プラスjQueryの挙動を有するオートコンプリートフィールドを作成することができましたそして最後に私のフォームに追加してください(私はinit()の中にあるので、$ thisを使って説明します)。

$this->addElement($elem); 

ありがとうございました、魔法が完了しました。

PS:あなたのブートストラップに次のように追加することを忘れないでください:

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

を処理するために、Zendのフレームワークにプラグインを追加する方法を示しZendXは削除され、サポートされなくなります。 – MEM

+0

@MEM:ソースリンク? – 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

、ありがとうまあ、Zend_Formでは、あなたのためのバリJavaScriptの任意のクライアント側を生成しません。

しかし、サーバー上ですべての検証を行い、jQueryを使用してフィールドの変更イベントにフックし、フォームの検証時にAJAXに接続することができます。

サンプルをthatにチェックしてください。