我的表單驗證有一個奇怪的問題。我在表格中有4個輸入,他們都被驗證。cakephp中的表單驗證問題
一切正常,直到它驗證我的最後一個輸入字段是一個電子郵件輸入字段。我在電子郵件輸入字段中設置了兩個規則'rule' => 'notEmpty'
,'rule' => 'email'
。表單驗證併發布時很好,因爲它只需檢查notEmpty規則,但如果找到無效的電子郵件,它會驗證它,但即使在輸入有效的電子郵件後也不會發布。
這裏是一些假設:
一:所有輸入用戶輸入有效的條目
一切工作正常,表單職位和將數據添加到數據庫中。
二:爲所有,但email輸入用戶輸入有效的條目,但隨後進入在所有輸入
一個有效的電子郵件假設用戶點擊僅前三場
一切工作提供意見後提交在他們首先輸入一個有效的電子郵件地址後,表格帖子和數據被添加到數據庫中。
三:所有除了電子郵件用戶輸入有效條目(提供了一個無效的電子郵件)
它顯示錯誤消息,但即使提供了一個有效的電子郵件地址後,它不會做任何事情。我注意到,如果您不斷點擊提交按鈕,頁面會繼續使用相同的數據重新加載。
此外,該錯誤信息消失,如果提交按鈕的第一次點擊
這裏後,再次點擊是我的模型:
class Member extends AppModel
{
public $validate = array(
'id' => array(
'rule' => 'notEmpty'
),
'Student_First_Name' => array(
'rule' => 'notEmpty'
),
'Student_Last_Name' => array(
'rule' => 'notEmpty'
),
'Student_Email' => array(
'emailRule-1' => array(
'rule' => 'notEmpty',
'last' => false
),
'emailRule-2' => array(
'rule' => 'email',
'message' => 'Please enter a valid email address.'
))
);
}
這裏是控制器:
class MembersController extends AppController
{
...
public function add()
{
if($this->request->is('post'))
{
$this->Member->create();
if($this->Member->save($this->request->data))
{
$this->Session->setFlash('Member has been added!');
$this->redirect(array('action' => 'members'));
}
else
{
$this->Session->setFlash('Unable to add member.');
}
}
}
}
對於這樣一個簡單/煩惱問題的長篇帖子,我表示歉意,但我討厭在我的應用程序/網站上有這樣的東西。
謝謝。
你爲什麼使用''last'=> false'?對我來說沒有意義..如果一個人沒有輸入任何電子郵件,就沒有必要檢查一個有效的電子郵件形式...... – mark 2013-04-09 11:48:13
是它的不必要的,我只是查閱文檔,並嘗試不同的東西。 – Archon 2013-04-09 12:04:29