2010-01-07 48 views
1

每次使用cfparam時,我都會有一種感覺,就是我把它放在錯誤的地方或一般誤用。使用CFPARAM的策略/建議

考慮這個例子,假設我們需要顯示新的實體形式(使用默認輸入值):

<cfparam name="form.attachLink" default="" /> 
<input type="text" name="attachLink" value="#HTMLEditFormat(form.attachLink)#" /> 

即使這樣簡單的人讓我思考以下幾個問題上cfparam

  1. 我應該在確切的使用地點之前使用它嗎?不會打破模型/視圖的想法?
  2. 或者我應該將它們分組在模型模板中的某個位置,還是應該放在視圖的頂部?
  3. 當paramin'形式數據,也許最好使用StructKeyExists(表單,「attachLink」)?當然,在處理提交的表單時,我會這樣做(加上驗證),但對於新形式,這也可能有用 - 對於像我這樣的安全偏執的人。
  4. 還有什麼地方可以使用這個標籤?我知道一個非常有用的地方:自定義標籤,儘管它們本身也變得越來越傳統。

謝謝。

回答

2

冒着無謂的風險:「這要看情況。」

我認爲CFPARAM可以用於設置默認值以及驗證變量的類型並在不匹配時拋出錯誤這一事實有點複雜。這就是說,我幾乎總是隻爲前者使用它。對於後者,很多都被組件的論據所包含。

其中一個更有用的用法是在帶有複選框的表單的操作頁面上。

<cfparam name="form.myCheckbox" default="" /> 

因爲它是有效的形式進行檢查沒有複選框,這使我不必創建特殊的驗證,看是否表單變量在使用它之前存在,並且,因爲我幾乎總是治療它作爲一個列表,一個空字符串對列表函數仍然有效。

至於放置它們的位置,當我使用它們時,我幾乎總是將它們放在cfm文件的頂部,但這可能只是一種風格。如果你將它們灑在你的代碼中,我認爲你會遇到變量將被設置的情況,並且你不知道它發生了什麼。

當然,我現在幾乎完全使用模型膠。 CFPARAM用處不大。

+0

我會第二個,我把他們放在頂部。它將它們全部集中在一個易於查找和調試的地方,如果/出現問題時。 – Jason 2010-01-07 17:53:54

+0

我的公司目前沒有使用任何框架(違揹我的意願)。當運行一個執行數據庫更新/插入的頁面時,我通常會將它們阻止在頁面的頂部。當使用它們來允許表單重新顯示時,如上例所示,我將它們放在示例中的位置。 – 2010-01-07 17:53:54

0

如果要引用表單值中的變量,應該使用具有合理默認值(甚至空白)的cfparam來確保變量存在。但是,如果變量僅在表單處理時被引用,那麼我會跳過cfparam(不必在表單中設置值),而是在表單處理步驟中使用structKeyExists(scope,「key」)。

在MVC框架中,您可以選擇以另一種方式設置默認值。在這種情況下,您很可能不直接引用表單範圍,而是框架管理的範圍。保險絲盒使用「事件」範圍。在頁面加載時,Fusebox框架將URL和FORM範圍一起合併到EVENT範圍中。如果你擔心'打破MVC',我建議在MVC控制器(使用你的框架推薦的方法)在你的框架範圍內(在我的例子中爲EVENT)設置和/或測試必要的變量,然後再顯示錶單風景。很可能你不需要cfparam。

0

我想到了cfparam,就像我想到變量聲明一樣。我總是將我的變量儘可能地接近我要使用變量的位置。在coldfusion世界中,我在cfform標籤之前使用cfparam標籤。

聽起來像你正在使用MVC框架。我不明白這是如何影響cfparam的使用的。該模型是您獲取數據的地方。 CFParam不是特定於模型的。