2012-08-13 5 views
1

현재 젠드 폼 검증 및 Ajax에 문제가 있습니다. 내가 양식을로드하고있어이 방법을 사용하여 사업부 컨테이너에 표시 할 :젠드 폼 유효성 검사 + 아약스

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

및 전송 컨트롤러 :

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

모두가 크고 형태가 내가 원하는 사업부 컨테이너에 성공적으로로드 그렇지만 내가 유효성을 검사하려고 할 때 정상적인보기를 호출하고 이전 페이지 래퍼없이 양식 만 얻습니다. 누구든지 양식을 검증하고 동일한 창에 보관하는 방법을 알고 있습니까?

감사합니다.

답변

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; 

    } 
} 

Temlates :

<!-- 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  --> 

는 pawella

를 맞이