0

我是 zend 框架的新手,但我已经成功地迈出了第一步。到目前为止,我已经创建了一些 Zend_Forms,它们将我的模型的单个记录映射到表单字段。我已经为每种情况处理了带有表单类的表单。到目前为止,这一切都很好。

现在我遇到了必须为产品分配功能的情况。功能和产品是我的应用程序的一部分。特征存储在我的数据库中的三个表中。对于每个特征,第三个表中都有一条记录

  • 首先是保存特征组名称的特征组。每个功能都应该分配给一个功能组。

  • 第二个表是特征表。此表具有功能组的外键和功能名称。

  • 第三个表是某种将功能连接到产品的多对多关系。此表有一个附加字段,其中包含产品此独特功能的可选值(在两个外键旁边)。

例如:如果产品的重量为 4,78 kg,则值“4,78”存储在第三个表中,标签“重量 %s kg”存储在第二个表中。特征组可能类似于“物理属性”,已保存在第一个表中。

长话短说:我的问题是如何处理我必须以一种形式创建和编辑多个数据库记录的情况计划是为每个功能提供一个带有许多复选框的表单,从而按主题对功能进行分组。每个复选框都应该有一个额外的文本字段来输入可选值。

4

3 回答 3

0

您可以尝试在表单类中创建子表单(Zend_Form_SubForm)。这可以分隔不同表的字段。对于版本,在您的控制器中,当您从树表中提取所有数据时,您可以填充与表对应的子表单。

于 2010-02-18T01:57:26.823 回答
0

您可以尝试扩展 Zend_Form 来创建您自己的元素。

您将能够编写一个连接到 DB 以获取属性(功能和产品)的类。

假设您编写了My_Form_Element_Features&My_Form_Element_Products类,您可以执行$features = new My_Form_Features();然后使用基类方法,如getValues(),populate()等。

你可以看看那里开始:

--

要回答您的评论,您可以使用:

Zend_Form::setElementsBelongTo($array):

更多信息可以在Zend_Form Advanced 手册页中找到。

于 2010-02-17T13:42:46.000 回答
0

您可以创建一个扩展 Zend_Form 的自定义表单类并将其用于您的类。它可以接收模型的构造实例并基于该模型构造表单输入。在您的控制器中进行表单验证后,您可以执行

$values = $form->getValues();

并使用该数组再次填充您的模型

于 2010-02-17T13:42:54.940 回答