我的表单验证有一个奇怪的问题。我在表格中有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