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 个表格 - 只有一个表格起作用

codeigniter 分页 - 结果在每一页上保持不变

是否可以在一页上有多个 Twitter Bootstrap 轮播?

轮播控制按钮仅在一页上有效

在一页上邮寄两个嵌入的表格