2

手始めに、同様のトピックをstackoverflowで検索してみました。すでに回答済みの投稿があるため、いくつかの同様の投稿がシャットダウンされたことを理解していますが、これは実際には役に立たないと思います(ここではzend form validation、おそらく私は十分に賢くないです)ので、管理者にこの投稿を許可してくださいしばらく滞在>**

私の場合、最初にコントローラーでフォームを記述します。

        $this->_helper->layout->disableLayout();
    $form = new Zend_Form();
    $form->setAction('/user/login')
         ->setMethod('post');

    // Create and configure username element:
    $username = $form->createElement('text', 'username');
    $username->addValidator('alnum')
             ->addValidator('regex', false, array('/^[a-z]+/'))
             ->addValidator('stringLength', false, array(6, 20))
             ->setRequired(true)
             ->addFilter('StringToLower');

    // Create and configure password element:
    $password = $form->createElement('password', 'password');
    $password->addValidator('StringLength', false, array(6))
             ->setRequired(true);

    // Add elements to form:
    $form->addElement($username)
         ->addElement($password)
         // use addElement() as a factory to create 'Login' button:
         ->addElement('submit', 'login', array('label' => 'Login'));

次に、ビューファイルに出力します:

<?php echo  $this->testForm;?> 

そして、フォームバリデーター用の本当にクールな Jquery プラグインを見つけましたが、それを Zend Form のコードと統合する方法がわかりません。Zendx_Jquery を参照しようとしましたが、フォーム検証オプションが含まれていないようです。

誰かが光を細断できますか?ありがとう。

PS、あなたは私のコードで、私はすでに検証のためのいくつかのパラメータを持っていることに気付くかもしれません.それは私が望むものではありません.

4

1 に答える 1

2

jQuery 検証を追加するには、いくつかのデコレータをフォームに追加できます。例:

    $form->setName('postForm');
    $form->setMethod('post');
    $form->addDecorator('HtmlTag', array('tag' => 'div', 'class' => 'my-lovely-form'));
    $form->setAttrib('enctype', 'multipart/form-data');

View.phtml次に、例で jQuery 検証を行います。

$('#postForm').validate({
            submitHandler: function(form) {
                $("#submit").attr('disabled', 'disabled');
                form.submit();
            },
            onchange: true,         
            errorLabelContainer: $('.error-container'),
            wrapper: "p",
            rules: {
                name: {
                    required: true,
                    minlength: <?php echo $this->validationConfig->form->name->minlength; ?>,
                    maxlength: <?php echo $this->validationConfig->form->name->maxlength; ?>
                },
                title: {
                    required: true,
                    minlength: <?php echo $this->validationConfig->form->title->minlength; ?>,
                    maxlength: <?php echo $this->validationConfig->form->title->maxlength; ?>
                }
            },
            messages: {
                name: {
                    required: "Full name is required",
                    minlength: "Full name has to be at least <?php echo $this->validationConfig->form->name->minlength; ?> characters long",
                    maxlength: "Full name has to be less than <?php echo $this->validationConfig->form->name->maxlength; ?> characters long"
                },
                title: {
                    required: "Title is required",
                    minlength: "Title has to be at least <?php echo $this->validationConfig->form->title->minlength; ?> characters long",
                    maxlength: "Title has to be less than <?php echo $this->validationConfig->form->title->maxlength; ?> characters long"
                }
            }
        });

これがお役に立てば幸いです。

于 2012-09-03T07:54:18.663 に答える