我的表单验证有一个奇怪的问题。我的表单中有 4 个输入,它们都在被验证。
一切正常,直到它验证我的最后一个输入字段,即电子邮件输入字段。我在电子邮件输入字段上设置了两个规则,'rule' => 'notEmpty'
, 'rule' => 'email'
。当表单只需要检查 notEmpty 规则时,表单验证和发布就很好,但如果发现无效的电子邮件,它会验证它,但即使在您输入有效的电子邮件后它也不会发布。
以下是一些场景:
一:用户为所有输入输入有效条目
一切正常,表单发布和数据被添加到数据库中。
二:用户为除电子邮件输入之外的所有输入输入有效条目,但随后在所有输入中输入有效电子邮件
假设用户仅在为前三个字段提供输入后点击提交,
在他们第一次输入有效的电子邮件地址后一切正常,表单帖子和数据被添加到数据库中。
三:用户为除电子邮件之外的所有条目输入有效条目(提供无效的电子邮件)
它显示错误消息,但即使提供了有效的电子邮件地址,它也不会做任何事情。我注意到如果您继续单击提交按钮,页面会不断重新加载相同的数据。
此外,如果在初次单击后再次单击提交按钮,则错误消息会消失
这是我的模型:
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.');
}
}
}
}
对于这么简单/烦人的问题,我为这么长的帖子道歉,但我讨厌在我的应用程序/网站中有这样的东西。
谢谢你。