2011-10-16 17 views
1

我有一個表格,其中用戶可以輸入一個位置的地址,以及公用事業公司,該地址提供服務。該實用程序數據被關聯到建築:製作相關型號可選

Location hasMany Utility 

獨資公用事業的範圍內,該name場是必需的,有說明儘可能多的驗證。但是,在一個位置的上下文中,任何實用信息都是可選的。用戶可以選擇不輸入數據時,輸入一個位置,這隻會表明他們不想將該位置與我們跟蹤的任何或所有公用事業公司關聯。

使用FormHelper,不過,檢測驗證,並根據需要在實地得到顯着。我希望保留獨立輸入實用程序數據的實例的驗證,但要刪除位置表單上所需的指示符。我知道我可以用任何方法破解這個(例如,通過javascript等去除required類),但我想知道是否有一種乾淨的方式來使用Cake API來做到這一點。我沒有看到任何明顯的東西,所以我希望別人來過這裏,並找到一個乾淨簡單的解決方案。

謝謝。

+0

沒有測試;但你也許可以嘗試使用'fieldList'參數爲'只會驗證()'方法......參見[這裏](http://book.cakephp.org/view/1182/Validating-Data-from-the-Controller )。可能不會處理相關的數據,但是〜 – Ross

回答

1

您可以詢問用戶他們想要多少實用工具創建窗體前添加,也可以動態使用JS添加實用紀錄輸入(後來是更多的工作要做,而不是防錯的前任的)。

觀點的例子(如果你想這樣做在1個視圖):

if (empty($this->data){ 
    // a form to ask how many utility records the users want to create. 
}else{ 
    // generate the form based on user input. 
} 

我假設你知道在控制器做。

+0

因此,繞過FormHelper並給予我對'required'類的完全控制。也是我正在考慮的「黑客」。我希望有一種方法可以告訴'Utility'模型禁用對繪製表單請求的驗證。也許我可以直接修改'$ validates'屬性... –

+0

不,你仍然使用formhelper來生成表單。您只需知道創建實用程序時創建多少條記錄。 –

0

我將一個類添加到表格元素是optionnal,和使用該類覆蓋「必需的」指示符。

+0

啊,這是我考慮的黑客之一,但我希望有一個API我不知道做這個乾淨。謝謝。 –