0

我想在 jQuery ajax 中添加一个新的 ZF2' Zend\Form\Element。但是当我使用 Zend Form 时,我不知道如何制作它。这是 add.phtml 文件。

<script type="text/javascript">
 $(document).ready(function(){
    $(".pid").change(function(){
    var id = $('.pid').val();
    var $_this = $(this);
     $.ajax({
            type:"POST",
            url:"<?php echo $this->url('Element/default',array('action'=>'change'));?>",
            data:"pid="+id,
            dataType:'json',
            async:false,
            success:function(data){
                if(data.response){
                   //here I want to add a new select  component after select conponent "pid" using like "$this->formRow($form->get('mid'))" or else .   
                }
            }
    });
  });
});
</script>

以下是html的剩余部分。

<?php
$title = 'add';
$this->headTitle($title);
?>
<h1><?php echo $this->escapeHtml($title); ?></h1>

<?php
$form = $this->form;

$form->setAttribute('action', $this->url(
'Element/default',
array(
    'action'     => 'add'
 )
));
$form->prepare();

echo $this->form()->openTag($form); 
echo $this->formRow($form->get('pid'));
echo $this->formRow($form->get('name'));
echo $this->formRow($form->get('desc'));
echo $this->formSubmit($form->get('submit'));
echo $this->form()->closeTag();

如何在 jquery ajax 中添加新的 zend 表单元素?谢谢。

4

1 回答 1

0

您有使用 ajax 接收数据的脚本,并且该脚本应该接收 view/html。您需要控制器/动作来呈现数据并作为响应返回。

use Zend\View\Model\JsonModel;    
//some controller
public function changeAction(){ // your requested action
    //1. get partial helper to rendering html;
    $partial = $this->getServiceLocator()->get('ViewHelperManager')->get('partial');
    $form = new Form();// your form
    //2. render html
    $html = $partial('path/to/your/file/phtml',['form'=>$form]);
    //3. return data as JSON because in your ajax configuration dataType: 'json'
    return new JsonModel([
        'html' => $html,
    ]);
}

在你的 js 成功函数中应该是:

success:function(data){
    if(data.html){
         $_this.find('blockToAppend').append(data.html);
    }
}
于 2017-11-20T12:34:10.320 回答