1

我需要使用 zend 框架创建一个多维数组形式。当我发布表格时,我应该能够获得以下结果作为帖子。

Array
(
    [Address] => Array
        (
            [customer] => Array
                (
                    [name] => Customer Name
                )

            [guest] => Array
                (
                    [name] => Guest Name
                )

        )

)

由于某种原因,我无法获得上述结果。到目前为止,我得到的结果是这样的。

Array
(
     [customer_name] => Customer Name
     [guest_name] => Guest Name
)

所以我的问题是 Zend_Form 是否支持多维表单数组?如果是怎么办?

提前致谢...

4

2 回答 2

5

这个问题不是关于 ZF,而是关于<form>系统。要检索多维表单数组,您必须提供良好的名称属性。

在 ZF 中,要操作名称,您可以使用:

$form->myelement->setAttrib('name', 'myname');或者 $form->myelement->setName('myname');

要做到你所期望的,你必须使用如下命名形式:

$form->element1->setName('[address][customer][name]');
$form->element2->setName('[address][guest][name]');

使用此命名,您将能够检索多维数组中的 POST 数据。

使用子表单,您只能操作第一个维度。因此元素将具有如下命名形式:

$subform1->setName('customer');
$subform1->element1->setName('[address][name]');
[...]//do it for each element

$subform2->setName('guest');
$subform2->element1->setName('[address][name]');
[...]//do it for each element
于 2013-03-18T09:51:10.443 回答
0

Zend_Form_Element 的 setName() 方法被过滤并且不允许 [ 和 ]。

setBelongsTo() 方法就是为此而生的。但我不确定 setName() 和 setBelongsTo() 对可以处理多个维度。

于 2014-06-17T09:29:04.887 回答