加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 以zend形式输入类似name =“person []”的数组

发布时间:2020-12-13 13:34:49 所属栏目:PHP教程 来源:网络整理
导读:在普通的html中,我们可以有一个像person []这样的数组字段 input name="person[]" type="text" /input name="person[]" type="text" /input name="person[]" type="text" / 据我所知,Zend_Form没有那个.我阅读了another answer,建议可以使用装饰器完成,该装
在普通的html中,我们可以有一个像person []这样的数组字段
<input name="person[]" type="text" />
<input name="person[]" type="text" />
<input name="person[]" type="text" />

据我所知,Zend_Form没有那个.我阅读了another answer,建议可以使用装饰器完成,该装饰器会在正确的位置添加[].这是该特定问题的代码

$html = ''; // some code html
$i = 0;
foreach ($element->getMultiOptions() as $value => $label){
    $html .= '<input type="checkbox" '
          .         'name="'.$element->getName().'[]" '
          .         'id="'$element->getName()'-'.$i.'" '
          .         'value="'.$value.'" />';
    $i++;
}
return $html;

这看起来是一个好的开始,但我想知道使用装饰器是否足够.返回的值必须正确读取并传递到服务器,然后在服务器端验证.装饰者错误的想法是什么?自定义元素会更有意义吗?我还没有看到一个很好的例子来说明如何做到这一点.

我认为ZF不允许创建名为person []的单个输入文本字段,尽管您可以为整个表单或子表单执行此操作.但是,它允许类似的东西.具体来说,您可以创建名为person [0],person [1]等的字段.

为此,您可以执行以下操作:

$in1 = $this->createElement('text','0');
$in2 = $this->createElement('text','1');
$in1->setBelongsTo('person');
$in2->setBelongsTo('person');

通过这种方式,您通常可以将验证器,过滤器等附加到$in1或$in2,它们将按预期工作.在您的操作中,在表单验证之后,您可以获取此人的输入文本字段的数组:

$values = $yourForm->getValues();
var_dump($values['person']);

有趣的是,以下内容不起作用:

$in1 = $this->createElement('text','person[0]');
$in2 = $this->createElement('text','person[1]');

希望这会帮助你.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读