如何在PHP中添加zend表单元素到窗体中?

问题描述:

我在我的Zend形式的foreach循环,在这种情况下,$this->args[1]有5计数:如何在PHP中添加zend表单元素到窗体中?

foreach ($this->args[1] as $val) 
    { 

     $submitImage = new Zend_Form_Element_Image('submit_image'); 
     $checkBox = new Zend_Form_Element_Checkbox('id_checkbox'); 

     $this->addElement($submitImage ->setImage($val->full_path)); 
     $this->addElement($checkBox ->setValue($val->id)); 
    } 

我遇到的问题是,$submitImage$checkBox被覆盖,我只能得到每一个元素, 最后一个。

任何想法如何使他们都显示出来?

感谢

我也试着:

$i=0; 
foreach ($this->args[1] as $val) 
    { 

     $submitImage = 'submitImage'.$i; 
      $checkBox = 'checkBox'.$i; 

     $submitImage = new Zend_Form_Element_Image('submit_image'); 
     $checkBox = new Zend_Form_Element_Checkbox('id_checkbox'); 

     $this->addElement($submitImage ->setImage($val->full_path)); 
     $this->addElement($checkBox ->setValue($val->id)); 
    $i++; 
    } 

,但它不工作

+1

您将不得不为每个元素指定一个唯一的名称,或使用子表单。见http://*.com/questions/405897/zend-form-array-based-elements – drew010 2012-02-25 02:24:51

你真的很接近,只需要小修复。任何使元素名称独特的东西。

foreach ($this->args[1] as $val) 
    { 

     $submitImage = new Zend_Form_Element_Image('submit_image'. $val->id); 
     $checkBox = new Zend_Form_Element_Checkbox('id_checkbox' . $val->id); 

     $this->addElement($submitImage ->setImage($val->full_path)); 
     $this->addElement($checkBox ->setValue($val->id)); 
    } 

,或者如果你喜欢

$i=0; 
foreach ($this->args[1] as $val) 
    { 

     $image = 'submitImage'.$i; 
      $box = 'checkBox'.$i; 

     $submitImage = new Zend_Form_Element_Image($image); 
     $checkBox = new Zend_Form_Element_Checkbox($box); 

     $this->addElement($submitImage ->setImage($val->full_path)); 
     $this->addElement($checkBox ->setValue($val->id)); 
    $i++; 
    } 

Liyali有它,我只是更详细的:)右

[编辑] 修正变量在第二循环的碰撞。

+0

第一个foreach工作。第二个没有出于某种原因,以防其他人读这个答案。非常感谢 – Patrioticcow 2012-02-27 17:15:26

你的元素名称必须是不同

$submitImage = new Zend_Form_Element_Image($submitImage); 
$checkBox = new Zend_Form_Element_Checkbox($checkBox);