2010-11-29 7 views
1

私はレガシーサイトを引き継いでいます。私のスパイディセンスコードの匂いは、サイト全体で使用されているフォームのパラミングよりも狂っています。オブジェクトのフォームパラメータ

たとえば、新しい連絡先を追加したり、URLに存在するiContactIdに依存して既存の連絡先を編集したりするフォームがあります。したがって、cfmファイルの最上部にあるコードはです。

<cfparam name="form.name" default=""> 
<cfparam name="form.age" default=""> 
<cfparam name="form.surname" default=""> 
<--- More cfparams for every form field---> 

<cfif isDefined("URL.iContactId")> 
<cfset VARIABLES.contact = contactService.getContact("URL.iContactId")/> 
    <cfset FORM.name = contact.getName() /> 
    <cfset FORM.age= contact.getAge() /> 
    <cfset FORM.surname = contact.getSurname() /> 
</cfif> 

だから、基本的に、私たちは空にするために、すべてのフォームフィールドをデフォルトにして、iContactIdがURLである場合は、それらを移入されています。 cfmファイルの下部にあるフォームは、次のような変数を使用します。

<form> 
    <input name="name" value="#FORM.name#"> 

さて、私のために、これらの技術の問題は、このページの約30フォームフィールドがあるということですので、私はすべてのフォームフィールドをparrammingています、その後、連絡先に30個のフォームフィールドを設定する場合の値をオブジェクトURL.iContactId変数が存在します。この複製を取り除く方法を考えようとしていますか?おそらくオブジェクトをフォームに直接マッピングすることによってですか?

アイデア?

おかげ

答えて

2

はなぜ見ないでください。

getContact()を実行すると、連絡先ID 0の「空の」オブジェクトが返され、空の連絡先オブジェクトからフォームが取り込まれます。 「空」とは、各フィールドにデフォルト値が設定されたオブジェクトを意味します。

例えば、

if (!StructKeyExists(URL,"iContactID")) URL.iContactID = 0; 
variables.contact = contactService.getContact(URL.iContactID); 

とした。

<input name="name" value="#contact.getName()#"> 

注意してください。このフォームに戻るサーバー側の検証を実行している場合は、無効なフィールドを修正できるように、フォームにデータを入れるための有効なデータを持つ連絡先オブジェクトがあることを確認する必要があります。

+0

こんにちは、お返事ありがとうございます。ええ、はるかに良い方法のように思えます。しかし、URL.iContactIdが存在しないときにフォームフィールドを特定のものにパラメータ化しなければならない場合はどうなりますか?たとえば、form.userSmokes = 0です。空の連絡先オブジェクトはこの機能を提供しません。 – namtax

+0

2つのこと:1. IDをデフォルトに設定するには、を使用します。 2.すべての既定値が設定された空のオブジェクトを返すようにgetContact()メソッドを設定します。 – sebduggan

+0

getContact()は指定されたオブジェクトを返しますか?おそらくサブクラス化された連絡先オブジェクトですか? – namtax

関連する問題