我是zend框架的新手,但已成功完成了我的第一步。 到目前为止,我已经创建了一些Zend_Forms,它们映射了我的模型的单个记录 到表单字段。我已经为每个案例处理了表单类的表单。 到目前为止,这一切都很顺利。
现在我的情况是我必须将产品的功能作为特征。功能和产品是我的应用程序的一部分。功能存储在我的数据库中的三个表中。 对于每个功能,第三个表格中都有一条记录。
首先是保存要素组名称的要素组。每个功能都应该与功能组对齐。
第二个表是功能表。此表具有要素组的外键和要素的名称。
第三个表是将功能与产品连接起来的某种多对多关系。此表有一个aditional字段,其中包含产品此独特功能的可选值(在两个外键旁边)。
例如:如果产品的重量为4,78千克,则值“4,78”存储在第三个表格中,标签“重量%s kg”存储在第二个表格中。功能组可能类似于第一个表中保存的“物理属性”。
简而言之: 我的问题是如何处理我必须以一种形式创建和编辑多个数据库记录的情况。 计划是为每个功能创建一个包含许多复选框的表单,其中功能是专题分组。每个复选框都应有一个aditional文本字段来输入可选值。
答案 0 :(得分: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 manual page找到更多信息。
答案 1 :(得分:0)
你可以创建一个自定义表单类来扩展Zend_Form并将它用于你的类。 它可以接受模型的构造实例,并根据模型构造表单输入。 在控制器中进行表单验证后,您可以执行
$values = $form->getValues();
并使用该数组再次填充模型
答案 2 :(得分:0)
您可以尝试在表单类中创建子表单(Zend_Form_SubForm)。这可以为不同的表分隔字段。对于版本,在控制器中,当您从树表中提取所有数据时,可以填充与表对应的子表单。