ZEND超载形式

时间:2015-04-18 17:36:32

标签: zend-framework zend-form zend-form-element

而不是我以前的viewcript,它将我的记录集显示为表:

$i=1;
foreach($this->aktermine as $termin) : 
?>

<tr>
<td class="row_<?PHP echo $i % 2;?>"><?php echo $this->escape($termin->nr);?></td>
<td class="row_<?PHP echo $i % 2;?>"><?php echo $this->escape($termin->kopfnr);?></td>
<td class="row_<?PHP echo $i % 2;?>"><?php echo $this->escape($termin->datum);?></td>
<td class="row_<?PHP echo $i % 2;?>"><?php echo $this->escape($termin->zeit);?></td>
<td class="row_<?PHP echo $i % 2;?>"><?php echo $this->escape($termin->thema);?></td>
<td></td>
</tr>

<?php 

$i=$i+1;
endforeach;

我在样式中构建了一个带有装饰器的表单,下一个代码段显示:

$kopfnr=$this->CreateElement('text','kopfnr')
             ->setAttrib('size', '5');
$kopfnr->setDecorators(array(
               'ViewHelper',
               'Description',
               'Errors',
               array(array('data'=>'HtmlTag'), array('tag' => 'td'))
               ));

如何在同一时间使用表单而不是viewscript?我希望看到所有相关记录,并且可以在不离开页面的情况下添加新记录。

这是我的indexcontroller:

$form = new Application_Form_Aktermine();
$this->view->form = $form;
$logenr = $this->_getParam('nr', 0);
if ($logenr > 0) {          
    $aktermine=new Application_Model_DbTable_Aktermine();
    $select=$aktermine->select()->where('kopfnr = ?',  $logenr) ;
    $this->view->aktermine = $aktermine->fetchAll($select);     
}

第一步应该是:在正确的表单字段中显示所有现有记录 第二步:添加操作,不会离开页面,但如果可能,则在现有记录的末尾添加一个新行,用户可以在新的数据记录中填写新数据。

1 个答案:

答案 0 :(得分:1)

我会使用JavaScript在表格的末尾添加一个空行,再加上AJAX,将新条目发送回控制器。