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 回答