gpt4 book ai didi

zend-framework - Zend Framework:使用数组符号形式的表单元素

转载 作者:行者123 更新时间:2023-12-03 13:19:06 27 4
gpt4 key购买 nike

我希望能够使用数组符号将隐藏的表单字段添加到我的表单。我可以这样用HTML做到这一点:

<input type="hidden" name="contacts[]" value="123" />
<input type="hidden" name="contacts[]" value="456" />


提交表单后, $_POST数组将包含分组为数组的隐藏元素值:

array(
'contacts' => array(
0 => '123'
1 => '456'
)
)


我可以在表单中添加一个隐藏元素,并指定数组符号,如下所示:

$form->addElement('hidden', 'contacts', array('isArray' => true));


现在,如果我用数组填充该元素,我希望它应该将值存储为数组,并将这些元素呈现为上面显示的HTML:

$form->populate($_POST);


但是,这不起作用。我正在使用的Zend Framework版本中可能存在错误。我这样做对吗?我应该怎么做?我怎样才能达到上述结果?如果需要,我愿意创建一个自定义表单元素。请让我知道我需要做什么。

最佳答案

您必须使用子表单来获取您想要的结果。该文档相当不错,但是您可以找到here
使用我在那里找到的内容,构建以下公式

 <?php

class Form_Test extends Zend_Form {

public function init() {
$this->setMethod('post');
$this->setIsArray(true);

$this->setSubFormDecorators(array(
'FormElements',
'Fieldset'
));

$subForm = new Zend_Form(array('disableLoadDefaultDecorators' => true));

$subForm->setDecorators(array(
'FormElements',
));

$subForm->addElement('hidden', 'contacts', array(
'isArray' => true,
'value' => '237',
'decorators' => Array(
'ViewHelper',
),
));

$subForm2 = new Zend_Form(array('disableLoadDefaultDecorators' => true));

$subForm2->setDecorators(array(
'FormElements',
));

$subForm2->addElement('hidden', 'contacts', array(
'isArray' => true,
'value' => '456', 'decorators' => Array(
'ViewHelper',
),
));

$this->addSubForm($subForm, 'subform');
$this->addSubForm($subForm2, 'subform2');


$submit = new Zend_Form_Element_Submit('submit');
$submit->setValue('Submit');

$this->addElement('submit', 'submit');
}

}

Wich输出以下html:
<form enctype="application/x-www-form-urlencoded" method="post" action=""><dl class="zend_form">
<input type="hidden" name="contacts[]" value="237" id="contacts">

<input type="hidden" name="contacts[]" value="456" id="contacts">

<dt id="submit-label">&nbsp;</dt><dd id="submit-element">

<input type="submit" name="submit" id="submit" value="submit"></dd></dl></form>

提交后,该帖子如下所示:
array(2) {
["contacts"] => array(2) {
[0] => string(3) "237"
[1] => string(3) "456"
}
["submit"] => string(6) "submit"
}

这样便可以创建所需的表单。希望这可以帮助!如果您有问题,请发表评论!
如果你问我的话,那是相当荒谬的。您基本上可以创建子表单,但是在那里禁用表单装饰器,因此仅元素会得到输出。由于相同的contacts []元素的格式不同,因此zend不会覆盖它们并且可以正常工作。但是,是的。
编辑:对其进行了一些更改,以删除标签并在隐藏的输入周围进行垃圾回收。

关于zend-framework - Zend Framework:使用数组符号形式的表单元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3672689/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com