2012-02-25 97 views
3

我在我的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://stackoverflow.com/questions/405897/zend-form-array-based-elements – drew010 2012-02-25 02:24:51

回答

4

你真的很接近,只需要小修復。任何使元素名稱獨特的東西。

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

2

你的元素名稱必須是不同

$submitImage = new Zend_Form_Element_Image($submitImage); 
$checkBox = new Zend_Form_Element_Checkbox($checkBox); 
相關問題