防止验证显示在多个表单cakephp上

防止验证显示在多个表单cakephp上,php,cakephp,validation,cakephp-2.0,models,Php,Cakephp,Validation,Cakephp 2.0,Models,我有一个奇怪的问题,我有一个页面,右上角有一个登录面板 // In Form1 if(isset($_POST['data']['form1']['submit1'])) { //display validations for form1 } // In Form2 if(isset($_POST['data']['form2']['submit2'])) { //display validations for form2 } 在页面中间的某个地方有一张登记表 // In Form1 i

我有一个奇怪的问题,我有一个页面,右上角有一个登录面板

// In Form1
if(isset($_POST['data']['form1']['submit1']))
{
 //display validations for form1
}

// In Form2
if(isset($_POST['data']['form2']['submit2']))
{
 //display validations for form2
}
在页面中间的某个地方有一张登记表

// In Form1
if(isset($_POST['data']['form1']['submit1']))
{
 //display validations for form1
}

// In Form2
if(isset($_POST['data']['form2']['submit2']))
{
 //display validations for form2
}
登录表单和注册表单都有来自用户模型的字段,其中包含用户名和密码

// In Form1
if(isset($_POST['data']['form1']['submit1']))
{
 //display validations for form1
}

// In Form2
if(isset($_POST['data']['form2']['submit2']))
{
 //display validations for form2
}
我的问题是,当注册表表单提交时,验证规则被激活,但其显示

// In Form1
if(isset($_POST['data']['form1']['submit1']))
{
 //display validations for form1
}

// In Form2
if(isset($_POST['data']['form2']['submit2']))
{
 //display validations for form2
}
登记表和登录表都是我不想要的

// In Form1
if(isset($_POST['data']['form1']['submit1']))
{
 //display validations for form1
}

// In Form2
if(isset($_POST['data']['form2']['submit2']))
{
 //display validations for form2
}
我希望它以这种方式工作,当我提交注册表格时,只验证注册表格,反之亦然

// In Form1
if(isset($_POST['data']['form1']['submit1']))
{
 //display validations for form1
}

// In Form2
if(isset($_POST['data']['form2']['submit2']))
{
 //display validations for form2
}

我找不到解决此问题的方法…请指导我正确的方向。

要仅在已发布的表单中显示验证错误,而不在其他表单中显示验证错误,您可以在视图中添加检查,在该视图中,错误显示为submit按钮名称,因为在这两种表单中,submit按钮将具有不同的名称,如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
}

若要仅在已发布的表单中显示验证错误,而不在其他表单中显示验证错误,可以在视图中添加“检查”,在该视图中显示错误时使用“提交”按钮名称,因为在这两种表单中,“提交”按钮将具有不同的名称,例如“提交1”和“提交2”

// In Form1
if(isset($_POST['data']['form1']['submit1']))
{
 //display validations for form1
}

// In Form2
if(isset($_POST['data']['form2']['submit2']))
{
 //display validations for form2
}

我在同一页面上的登录和注册表单也遇到了类似的问题

// 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表单元素,以便将它们标记为“login”而不是“User”。例如,我没有使用
$this->Form->input('User.email')
而是使用
$this->Form->input('Login.email')
。然后,我在每个表单中包含一个隐藏的“步骤”字段,并在提交表单时检查该字段是否存在

// In Form1
if(isset($_POST['data']['form1']['submit1']))
{
 //display validations for form1
}

// In Form2
if(isset($_POST['data']['form2']['submit2']))
{
 //display validations for form2
}
如果正在提交登录表单,则在继续之前,我会将登录表单元素切换到正确的模型:-

// In Form1
if(isset($_POST['data']['form1']['submit1']))
{
 //display validations for form1
}

// In Form2
if(isset($_POST['data']['form2']['submit2']))
{
 //display validations for form2
}
$this->request->data['User'] = $this->request->data['Login'];

这样,逻辑就在控制器中,而不是视图中。

我在同一页面上的登录和注册表单也遇到了类似的问题

// 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表单元素,以便将它们标记为“login”而不是“User”。例如,我没有使用
$this->Form->input('User.email')
而是使用
$this->Form->input('Login.email')
。然后,我在每个表单中包含一个隐藏的“步骤”字段,并在提交表单时检查该字段是否存在

// In Form1
if(isset($_POST['data']['form1']['submit1']))
{
 //display validations for form1
}

// In Form2
if(isset($_POST['data']['form2']['submit2']))
{
 //display validations for form2
}
如果正在提交登录表单,则在继续之前,我会将登录表单元素切换到正确的模型:-

// In Form1
if(isset($_POST['data']['form1']['submit1']))
{
 //display validations for form1
}

// In Form2
if(isset($_POST['data']['form2']['submit2']))
{
 //display validations for form2
}
$this->request->data['User'] = $this->request->data['Login'];

这样,逻辑在控制器中而不是在视图中。

但我不想删除验证…我的问题是两个表单在同一页中,当触发验证错误时,它会显示在两个表单中…我需要对两个表单进行验证..但当触发form1错误时,仅显示form1附近的有效性。。。反之亦然…因此,您只希望在发布的表单中显示验证错误,而不希望在其他表单中显示验证错误,因为您可以在视图中添加检查,其中错误以提交按钮的名称显示,因为在这两种表单中,提交按钮将具有不同的名称,如submit1和submit2。您太棒了…这就成功了,由于某些原因,我无法获取表单名称,但我能够获取“提交”按钮的名称,这就足够了…但我不想删除验证…我的问题是两个表单在同一页中,当触发验证错误时,它会显示在两个表单中…我需要对两个表单进行验证…但当触发form1错误时,显示仅在form1附近使用。。。反之亦然…因此,您只希望在发布的表单中显示验证错误,而不希望在其他表单中显示验证错误,因为您可以在视图中添加检查,其中错误以提交按钮的名称显示,因为在这两种表单中,提交按钮将具有不同的名称,如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
}