1

大家好,我正在使用 Zend Framework 1 构建一个联系人应用程序。我有一个联系人表和一个contact_data 表。

Contact
|NAME|DESCRIPTION|...

CONTACT DATA
|TYPE|LOCATION|DETAILS|CONTACT_ID

ADDRESS
STREET|ZIP|CITY|STATE|COUNTRY|CONTACT_ID

联系数据包含所有联系方式,例如电话、电子邮件、传真等,地址表是不言自明的。诀窍是我需要设置它,以便我可以添加无限的联系数据和地址。我之前通过大量处理自定义视图来完成这一点,但是那是在视图中放置了很多我不想要的代码逻辑。所以我正在使用 Zend_Form 重做它,但在设置从同一个表单部分添加/编辑/删除多个联系人详细信息时遇到了困难。

我已经制定了 javascript,并且知道如何使用视图来完成它 - 但我需要在这里使用 Zend Forms 来完成它。我已经研究了子表单的想法,但是在我的情况下,我需要执行以下操作:

我的表格结构如下:

列出的所有联系方式的文本和输入

一个特殊的联系人数据区域,其中包含添加电话、添加传真、添加地址的链接。单击这些链接将打开并向表中添加一组输入,例如添加地址链接将街道、城市、国家和州的输入集添加到表中。

我已经破解了一个小时,在这里我很迷失。关于我该如何处理的任何想法?

4

1 回答 1

0

我认为解决这个问题的最好方法是创建新元素。一个用于联系数据,一个用于地址。这些元素中的每一个都应该具有自定义 viewHelper 来呈现您的复杂界面。每个视图助手都可以分配 javascript 文件来处理动态添加/删除。

class Form_Element_Contact extends Zend_Form_Element_Xhtml {

    public $helper = 'contact';

}

class Zend_View_Helper_Contact extends Zend_View_Helper_FormElement {

    public function contact($name, $value = null, $attribs = null, $options = null) {
        $this->view->headScript()->appendFile("/js/dynamicInterfaceForContacts.js");
        $info = $this->_getInfo($name, $value, $attribs, $options);

        $html = $this->generateHtml(); // elements should be part of an array
        return $html;
    }

}

如果您需要更多详细信息,请告诉我。

于 2013-01-26T19:28:36.780 回答