【问题标题】:codeigniter: change html class when there is a form validation error?codeigniter:当出现表单验证错误时更改 html 类?
【发布时间】:2012-02-17 03:04:18
【问题描述】:

在使用 CodeIgniter 的表单验证时,我看到有一个 form_error() 函数用于打印错误(如果存在),如果不存在则打印空 html 标记。如果特定字段存在错误,是否有一种简单的方法来进行布尔测试?我想更改输入元素本身的类,而不仅仅是打印出错误。实现这一目标的最佳方法是什么?

【问题讨论】:

    标签: codeigniter validation


    【解决方案1】:

    我不在可以测试这个的地方,但这不可行吗?

    <?php
    if (!empty(form_error('username')))
    {
        $class = "error";
    }
    else
    {
        $class = "valid";
    }
    ?>
    
    <input type="text" name="username" class="<?= $class ?>" value="<?= set_value('username') ?>" />
    

    【讨论】:

    • 我在重写自定义表单库时遇到了类似的问题。无法访问表单验证类的_error_array,这有点烦人——您必须使用其中一个输出字符串的函数。在将error_delmiters 设置为空白(CI 硬编码\nvalidation_errors() 之间的错误之间)之后,我必须通过explode("\n", validation_errors()) 创建自己的数组,这甚至不包括哪个字段有错误,只是消息。很长的一段话,我认为你确实必须做这样的事情,即使它并不完全优雅。
    【解决方案2】:

    查看源代码(https://github.com/EllisLab/CodeIgniter/blob/v2.1.0/system/libraries/Form_validation.php 的第 207 行),如果没有与给定字段关联的错误,form_error() 返回一个空字符串。您可以检查该方法返回的内容并将其用作更改元素类的条件。

    【讨论】:

      【解决方案3】:

      这对我有用

      <?php 
      if(form_error('field_name') != '')
      {
         $class = 'error';
      }
      

      不知道为什么当 !empty 抛出错误时这会起作用:Can't use function return value in write context。

      【讨论】:

        【解决方案4】:

        我就是这样用的

        <div class="control-group <?php if (form_error('group')!="") echo "error"; ?>">
        

        【讨论】:

        • 略短:&lt;?= form_error('group') ? 'error' : '' ?&gt;
        【解决方案5】:

        另一个选项可以是父元素的样式。

        例如

        我使用了 twitter 引导程序,所以这里是代码

        <div class="controls">
          <input type="text" name="dob" id="dob">
          <?php echo form_error('dob'); ?>
        </div>
        

        为了设置错误的样式,我刚刚将它添加到 css 中

        > .controls p {  color : red; }
        

        错误元素显示在 p 标记中。 希望对您有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-07-01
          • 1970-01-01
          • 2021-05-10
          • 1970-01-01
          • 1970-01-01
          • 2021-09-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多