gpt4 book ai didi

zend-framework - 具有相同索引的数组的 zend 形式

转载 作者:行者123 更新时间:2023-12-04 18:11:42 28 4
gpt4 key购买 nike

我需要在zend中获得类似的东西

<input type="text" name="phone[1]" value="" />
<input type="text" name="address[1]" value="" />
<input type="text" name="banana[1]" value="whatever" />

请注意,它们在括号内具有相同的 id! (我不需要 name="phone[]"name="phone[phone1]" )

我试过了
https://stackoverflow.com/a/3673034/579646
https://stackoverflow.com/a/406268/579646https://stackoverflow.com/a/7061713/579646

问题出在 ZendFramework 中,我最终不得不用相同的名称“1”命名 3 个元素,最后一个元素覆盖了前一个元素。即使我创建 3 个子表单,我也会得到相同的效果。

不同的示例显示了如何获取具有不同索引或没有索引( [])的数组,但我需要不同的数组才能具有相同的索引。

谢谢

最佳答案

Zend_Form 有一个名为 setElementsBelongTo 的功能。 .看
http://framework.zend.com/manual/1.12/en/zend.form.advanced.html

使用方法是为 Zend_Form 对象设置前缀 setElementsBelongTo ,如果您想遍历每个字段,那么您可以使用子表单来封装每组字段

您可以调用setElementsBelongTo在您的 Controller 或 init() 中表单类的方法:

$mainForm = new Zend_Form();

$phoneForm = new Zend_Form_Subform();
$element = $phoneForm->createElement('text', '1'); // 1 is the element inside of the brackets
$phoneForm->addElement($element);
$phoneForm->setElementsBelongTo('phone'); // phone is the part leading the brackets
$mainForm->addSubform($phoneForm, 'phone_form');

$phoneForm = new Zend_Form_Subform();
$element = $phoneForm->createElement('text', '2'); // 1 is the element inside of the brackets
$phoneForm->addElement($element);
$phoneForm->setElementsBelongTo('phone'); // phone is the part leading the brackets
$mainForm->addSubform($phoneForm, 'phone_form2');

$addressForm = new Zend_Form_Subform();
$element = $addressForm->createElement('text', '1');
$addressForm->addElement($element);
$addressForm->setElementsBelongTo('address');
$mainForm->addSubform($addressForm, 'address_form');

echo $mainForm;

var_dump($mainForm->getValues());


 array(2) { 
["phone"]=> array(2) { [1]=> NULL [2]=> NULL }
["address"]=> array(1) { [1]=> NULL } }

要获得预期的结果,您需要删除一些装饰器(Form、dt 等):
<input type="text" name="phone[1]" value="" />
<input type="text" name="address[2]" value="" />

然后当您使用 $form->getValues() 检索值时结果是:
Array(
'phone' = Array(
'1' => <value>,
),
'address' = Array(
'1' => <value>,
)
);

关于zend-framework - 具有相同索引的数组的 zend 形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12509667/

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