1

現在、Zend Form Validation と Ajax に関する問題を発行しています。このメソッドを使用して、div コンテナーに表示されるフォームを読み込んでいます。

$('#' + windowId).load('transfer/format/html/id/' + number);

および転送コントローラー:

if ($this->_request->isXmlHttpRequest()) {
}

すべてが素晴らしく、フォームは目的の div コンテナーに正常に読み込まれますが、検証しようとすると、通常のビューが呼び出され、前のページ ラッパーなしでフォームのみが取得されます。そのフォームを検証して同じウィンドウに保持する方法を知っている人はいますか?

よろしく、

4

1 に答える 1

1

あなたはそのようなことを導くことができますか?フォームをどのように処理するかを決定する必要があります。Ajax の場合 - 以下の例。

<?php
class TestController
extends Zend_Controller_Action
{


    function indexAction() {

    }

    // render form
    function getFormAction() {

        $form = new Zend_Form();
        $form->addElement('hidden', 'isSubmit', array(
            'value' => 1
        ));
        $form->addElement('text','foo', array(
            'required' => true
        ));
        $form->addElement('submit','Send', array(
            'label' => 'ok'
        ));

        // $data
        if( $_POST['isSubmit'] && $form->isValid($_POST)) {
            // ...............
        }


        if( $this->_request->isXmlHttpRequest() ) {
            // render only ajax content in layout-content.phtml
            $this->_helper->layout->setLayout('layout-content');
        } else {
            // render full page elements
            $this->_helper->layout->setLayout('layout-default');
        }

        $this->view->form = $form;

    }
}

テンプレート:

<!-- index.phtml     -->
<div id="form-wrapper"></div>

<script type="text/javascript">
<!--
    $(function() {
        $("#form-wrapper").load( "<?= $this->url( array('action'=>'get-form') ) ?>");
    });
//-->   
</script>
<!-- index.phtml     -->

    <!-- get-form.phtml  -->
<?php 
if( $this->form ) {
    $this->form->setAttrib('id', 'my-form');
    $this->form->setAction( $this->url() );
    echo $this->form; 
}
?>

<script type="text/javascript">
<!--
$(function() {
    $('#my-form').submit( function() {
        var f = $(this);

        $.post(
            f.attr('action'), 
            f.serialize(), 
            function(data) { 
                $('#form-wrapper').html(data);
            }       
        );

        return false;
    }); 
});
//-->
</script>
<!-- /get-form.phtml     -->

パウェラに挨拶

于 2012-12-01T09:31:06.707 に答える