我有一个奇怪的问题,我有一个页面,在右上方有一个登录面板,
在页面中间的某个地方有一个注册表
登录表单和注册表单都有来自User Model的字段,其中包含用户名和密码。
我的问题是当注册表单提交验证规则被激活,但它显示
在注册表单和登录表单中都有我不想要的
我希望它以这种方式工作,当我提交注册表单验证仅注册表单,反之亦然..
我找不到解决这个问题的方法…请指引我正确的方向。
为了只显示已发布的表单中的验证错误,而不显示其他表单中的验证错误,您可以在视图中添加check,其中错误与提交按钮名称一起显示,因为在两个表单中提交按钮将具有不同的名称,例如submit1和submit2。
// In Form1
if(isset($_POST['data']['form1']['submit1']))
{
//display validations for form1
}
// In Form2
if(isset($_POST['data']['form2']['submit2']))
{
//display validations for form2
}
我在同一页面上的登录和注册表单也遇到了类似的问题。
我绕过验证错误问题的方法是重新标记登录表单元素,使它们被标记为"login"而不是"User"。例如,我用$this->Form->input('Login.email')
代替$this->Form->input('User.email')
。然后,我在每个表单中包含一个隐藏的'step'字段,并检查提交表单时出现的字段。
如果正在提交登录表单,则在继续之前将登录表单元素切换到正确的模型:-
$this->request->data['User'] = $this->request->data['Login'];