2009-07-15 119 views
2

這是我的表單:我想確保至少填寫了一個名稱/電子郵件對,因此我正在使用我的模型中的自定義驗證規則。CakePHP中的自定義表單驗證

alt text http://files.getdropbox.com/u/240752/formfields.png

我本來以爲它會做的第一個名稱/電子郵件對強制性的簡單情況,但如果有人在第三個例如填充,並且省略了電子郵件這並不能掩蓋其他領域。

而且,我只需要檢查一個有效的電子郵件地址,如果相應的好友字段填寫。

我是不是該得太多?我認爲我需要規則之間的某種互動,但我堅持不懈。

回答

0

將您的驗證邏輯放在beforeValidate回調中。

+0

我可以看到如何在每次驗證之前調用它,但我正在努力查看這將如何幫助我的具體情況。 – 2009-07-15 11:55:31

1
+0

嗨,dhofstet。我在發佈之前通讀了該部分,但這只是演示如何爲特定字段編寫規則。我需要1)檢查是否有朋友被填充2)如果是檢查相應的電子郵件字段是否填充有效。 – 2009-07-15 11:57:30

+1

是的,你爲一個特定的字段定義一個規則,但是,用$ this-> data你可以在你的驗證方法中訪問所有的數據。所以字段名稱只是用來觸發驗證方法。 – dhofstet 2009-07-15 14:23:30

0

如何生成你的領域?我假設你正在使用類似:

<?php echo $form->input('Friend.name'); ?> [html stuff] <?php echo $form->input('Friend.email'); ?> 

因爲做一個網頁內的幾次會產生重複的ID(如「FriendName」是由<?php echo $form->input('Friend.name'); ?>生成的每個領域所產生的ID),你可能需要在生成它們時爲每個字段名稱添加一個數字,然後在您的控制器中循環使用$this->data['Friend'],並在發現它們時使違規字段失效(如果名稱存在但電子郵件不存在,就像您說)。

我不認爲有一個蛋糕來處理這種情況的內置方式,但我以前錯了!