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 を使用してこれを実行する必要があります。サブフォームのアイデアを見てきましたが、私の場合は次のことを行う必要があります。

私のフォームは次のように構成されています。

リストされているすべての連絡先の詳細のテキストと入力

電話の追加、ファックスの追加、住所の追加へのリンクがある特別な連絡先データ領域。これらのリンクをクリックすると、テーブルが開き、一連の入力がテーブルに追加されます。たとえば、住所リンクを追加すると、通り、都市、国、および州の一連の入力がテーブルに追加されます。

私はこれを1時間ハッキングしてきましたが、ここでかなり迷っています。これをどのように処理できますか?

4

1 に答える 1

0

この問題を解決する最善の方法は、新しい要素を作成することだと思います。1 つは連絡先データ用で、もう 1 つは住所用です。これらの各要素には、複雑なインターフェイスをレンダリングするためのカスタム 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 に答える