我有一個配置文件頁面,當用戶嘗試更新其頁面配置文件,並且輸入不根據驗證規則驗證,它仍然繼續保存(或至少輸出成功消息)但沒有數據被存儲,它將恢復到原始值。只有在通過驗證規則時,它纔會存儲這些值。cakePHP驗證繞過更新
我不知道如何解決這個問題,因爲我的驗證規則看起來正確。有任何想法嗎?
驗證規則
public $validate = array(
"username" => array(
"email" => array(
"rule" => "email",
"message" => "The username must be a valid email address."
),
"unique" => array(
"rule" => "isUnique",
"message" => "This username has already been registered."
)
),
"password" => array(
"alphaNumeric" => array(
"rule" => "alphaNumeric",
"message" => "The password can only contain alpha-numeric characters"
),
"between" => array(
"rule" => array("between",8,12),
"message" => "The password must contain between 8 - 12 characters."
)
),
"company" => array(
"rule" => "notEmpty",
"message" => "Please provide a company name"
),
"first_name" => array(
"rule" => "notEmpty",
"message" => "Please provide the contact person's first name"
),
"last_name" => array(
"rule" => "notEmpty",
"message" => "Please provide the contact person's last name"
),
"telephone" => array(
"numeric" => array(
"rule" => "numeric",
"message" => "The telephone number must be numeric"
),
"maxLength" => array(
"rule" => array("maxLength",10),
"message" => "Your telephone umber must be 10 numbers."
)
),
"fax" => array(
"numeric" => array(
"rule" => "numeric",
"message" => "The fax number must be numeric"
),
"maxLength" => array(
"rule" => array("maxLength",10),
"message" => "Your fax umber must be 10 numbers."
)
),
"user_type_id" => array(
"rule" => "numeric",
"message" => "Please select a user type"
),
"user_status_id" => array(
"rule" => "numeric",
"message" => "Please select the users status."
)
);
控制器的方法:
public function profile() {
if($this->request->is('post') || $this->request->is('put')) {
if($this->Auth->user("id") == $this->request->data['User']['id']) {
$this->User->save($this->request->data);
$this->Session->setFlash('Your profile has been updated','default',array('class'=>'success'));
} else {
$this->Session->setFlash("An error has occured updating your profile.");
}
}
$this->request->data = $this->User->read(null,$this->Auth->user("id"));
}
我想我的回答是不夠好:( – tigrang 2012-07-22 07:00:22
它在這裏似乎就普遍認爲有效的答案是不夠的,你需要寫一篇文章來得到最好的答案。 – Alex 2012-07-22 08:45:06