Codeigniter 2在一个页面上形成validation_errors问题

时间:2011-04-27 10:38:32

标签: php forms codeigniter

在我的一个网站上,我在一个页面上有2个表单,我遇到了问题,validation_errors();基本上发生了什么,是我检查错误的一种表单以及是否有任何错误我正在做一些样式来将标签变为红色,其他形式如何使用echo validation_errors();显示错误。当我提交不显示错误的表单时,只会出现错误样式,表单中会显示验证错误。我怎么能阻止这个?

2 个答案:

答案 0 :(得分:23)

您的问题有点难以理解,但如果我理解正确 - 您无法从一个控制器验证两个单独的表单,或者使用validation_errors()处理来自不同表单的错误的问题,这些错误会打印所有错误:

在运行验证之前,请检查是否存在隐藏字段,表单所特有的字段,或者您可以检查特定提交按钮的值。

<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

然后在您看来,您将使用:{/ p>而不是validation_errors()

if (isset($form1_errors)) echo $form1_errors; // Print only form1's errors

如果这没有帮助,请通过发布您的代码澄清您的问题。

答案 1 :(得分:0)

我所做的是划分两种形式。视图就像

    <?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
    }

现在,所有验证消息都会出现在同一个地方,但只会显示每个表单的消息。希望有所帮助