如何在PHP中向表单中添加Zend表单元素?

3

我在我的Zend表单中有一个foreach循环,此时$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++;
    }

但它不起作用。


1
你需要为每个元素赋予一个唯一的名称,或者使用子表单。请参考https://dev59.com/C3RC5IYBdhLWcg3wG9Xo。 - drew010
2个回答

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理解得很对,我只是表达得更详细一些 :)

[编辑]在第二个循环中纠正了变量冲突。


第一个foreach循环起作用了。第二个由于某种原因没有起作用,以防其他人阅读此答案。非常感谢。 - Patrioticcow

2

你的元素名称必须不同

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接