【问题标题】:Codeigniter 2 forms on one page, validation_errors problemCodeigniter 2 表单在一页上,validation_errors 问题
【发布时间】:2011-08-13 17:58:46
【问题描述】:

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

【问题讨论】:

    标签: php forms codeigniter


    【解决方案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
      

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

      【讨论】:

        猜你喜欢
        • 2014-04-15
        • 1970-01-01
        • 2014-07-12
        • 1970-01-01
        • 1970-01-01
        • 2015-02-15
        • 2012-10-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多