Как добавить Zend элементы формы в форму в PHP? - PullRequest
3 голосов
/ 25 февраля 2012

у меня есть цикл foreach в моей форме Zend, в этом случае $this->args[1] имеет счет 5:

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++;
    }

но это не работает

Ответы [ 2 ]

4 голосов
/ 25 февраля 2012

Вы действительно близки, нужны только незначительные исправления.Что угодно, чтобы сделать имя элемента уникальным.

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++;
    }

Лияли имеет на это право, я просто более многословен

[EDIT] исправлено столкновение переменных во втором цикле.

2 голосов
/ 25 февраля 2012

Ваши имена элементов должны быть разные .

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