Codeigniter 2 表单在一页上,validation_errors 问题
Posted
技术标签:
【中文标题】Codeigniter 2 表单在一页上,validation_errors 问题【英文标题】:Codeigniter 2 forms on one page, validation_errors problem 【发布时间】:2011-08-13 17:58:46 【问题描述】:在我的一个网站上,我在一页上有 2 个表单,我遇到了问题,validation_errors();
基本上发生了什么,是我正在检查错误的表单之一,如果有任何错误我做一些样式以将标签变为红色,其他表单如何使用echo validation_errors();
显示错误。当我提交不显示错误的表单时,只是错误样式化验证错误会显示在表单中。我怎样才能阻止这种情况?
【问题讨论】:
【参考方案1】:我所做的是将两种形式分开。视图会是这样的
<?php echo validation_errors(); ?>
<?php echo form_open('form1'); ?>
<form id="form1" action="some_action">
//Inputs
</form>
<?php echo form_open('form2'); ?>
<form id="form2" action="other_action">
//Inputs
</form>
现在,在控制器中,您可以为每个验证使用两个不同的功能:
//Controller
function some_action()
//validate form and code
function other_action()
//validate form2 and code
现在,所有验证消息都将出现在同一个位置,但只会显示每个表单的消息。希望有帮助
【讨论】:
【参考方案2】:您的问题有点难以阅读,但如果我理解正确 - 您在验证来自一个控制器的 2 个单独的表单时遇到问题,或者使用 validation_errors()
处理来自不同表单的错误时遇到问题,afaik 会打印所有错误:
在运行验证之前,检查是否存在隐藏字段、表单独有的字段,或者您可以检查特定提交按钮的值。
<form>
<input type="hidden" name="form1" value="whatever">
<input name="form1_email" />
<input type="submit" value="Submit Form 1" />
</form>
然后您可以使用这些方法中的任何一种来检查提交了哪个表单(此示例检查是否提交了“form1”):
<?php
// Choose one:
if ($this->input->post('form1')): // check the hidden input
if ($this->input->post('form1_email')): // OR check a unique value
if ($this->input->post('submit') == 'Submit Form 1'): // OR check the submit button value
if ($this->form_validation->run()):
// process form
else:
// Create a variable with errors assigned to form 1
// Make sure to pass this to your view
$data['form1_errors'] = validation_errors();
endif;
endif;
// Do same for form 2
那么在你看来,你应该使用 validation_errors()
而不是:
if (isset($form1_errors)) echo $form1_errors; // Print only form1's errors
如果这没有帮助,请告诉我,并通过发布您的代码来澄清您的问题。
【讨论】:
以上是关于Codeigniter 2 表单在一页上,validation_errors 问题的主要内容,如果未能解决你的问题,请参考以下文章
Wordpress 联系表格 7:一页上有 2 个表格 - 只有一个表格起作用