7

codeIgniter 中是否有我可以编辑的文件,以便我可以自定义表单验证消息?

在此处输入图像描述

我只想将它们放在项目符号列表中以消耗更少的空间。

这是我用来输出错误消息的代码:

<div class="alert <?php echo $alert['alert_type']; ?> min-form">
        <button type="button" class="close" data-dismiss="alert">x</button>
        <h4><?php echo $alert['main_message']; ?></h4> 
        <?php echo $alert['sub_message']; ?>
</div>

基本上,$alert['sub_message']它只是validation_errors()从 CodeIgniter 的函数中获取数据,该函数从表单中输出验证错误。

4

8 回答 8

11

您可以通过以下方式更改错误分隔符

<ul>
<?php echo validation_errors('<li>', '</li>'); ?>
</ul>

文档:https ://www.codeigniter.com/user_guide/libraries/form_validation.html#sharing-the-error-delimiters

对于 v3:https ://www.codeigniter.com/userguide3/libraries/form_validation.html#sharing-the-error-delimiters

于 2012-06-30T07:24:45.987 回答
8

您可以通过创建以添加额外的验证规则来扩展 form_validation 类以获得最大控制application/libraries/MY_form_validation.php- 我在下面附上了一个示例。

直接编辑系统库是不好的做法;CI 提供了更好的选择(通过类、钩子覆盖/自定义MY_)。这为您提供了轻松升级 CI 版本的好处,并使您的应用程序可移植/自定义代码与核心框架隔离。

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

/**
 * CodeIgniter Form Validation Extension
 */
class MY_Form_validation extends CI_Form_validation {

    /**
     *  MY_Form_validation::valid_url
     * @abstract Ensures a string is a valid URL
     */
    function valid_url($url) {
        if(preg_match("/^http(|s):\/{2}(.*)\.([a-z]){2,}(|\/)(.*)$/i", $url)) {
            if(filter_var($url, FILTER_VALIDATE_URL)) return TRUE;
        }
        $this->CI->form_validation->set_message('valid_url', 'The %s must be a valid URL.');
        return FALSE;
    }

    /**
     * MY_Form_validation::alpha_extra()
     * @abstract Alpha-numeric with periods, underscores, spaces and dashes
     */
    function alpha_extra($str) {
        $this->CI->form_validation->set_message('alpha_extra', 'The %s may only contain alpha-numeric characters, spaces, periods, underscores & dashes.');
        return ( ! preg_match("/^([\.\s-a-z0-9_-])+$/i", $str)) ? FALSE : TRUE;
    }

    /**
     * MY_Form_validation::numeric_comma()
     * @abstract Numeric and commas characters
     */
    function numeric_comma($str) {
        $this->CI->form_validation->set_message('numeric_comma', 'The %s may only contain numeric & comma characters.');
        return ( ! preg_match("/^(\d+,)*\d+$/", $str)) ? FALSE : TRUE;
    }

    /**
     * MY_Form_validation::matches_pattern()
     * @abstract Ensures a string matches a basic pattern
     */
    function matches_pattern($str, $pattern) {
        if (preg_match('/^' . $pattern . '$/', $str)) return TRUE;
        $this->CI->form_validation->set_message('matches_pattern', 'The %s field does not match the required pattern.');
        return FALSE;
    }   

}

/* End of file MY_form_validation.php */
/* Location: ./{APPLICATION}/libraries/MY_form_validation.php */
于 2012-06-30T23:10:30.190 回答
3

您可以 <?php echo form_error('field name', '<div class="error">', '</div>'); ?> 用于单独显示错误。

文档

于 2014-01-04T15:26:53.587 回答
2

您可以使用 CodeIgniter 的函数将分隔符从<div>更改为:<li>set_error_delimiters

$this->form_validation->set_error_delimiters('<li>', '</li>');

您应该在加载表单验证类后立即执行此操作。

这将改变方式validation_errors() form_error('field_name')显示出来。所以你需要添加ulol如下:

echo '<ul>' . validation_errors() . '</ul>';
于 2014-05-28T16:24:18.900 回答
1

与上面的答案相同,只要您想使用引导程序:

<ul>
<?php echo validation_errors('<li><span class="label label-danger">', '</span></li>'); ?>
</ul>
于 2016-10-08T21:27:47.327 回答
1

3 格式化/自定义错误显示的方法

1. 全局更改分隔符:要在控制器方法中全局更改错误分隔符,就在加载表单验证类之后。在 form_validation 库加载之后加载。您也可以在构造函数中加载。

$this->form_validation->set_error_delimiters('<div class="error">', '</div>');

2.单独更改分隔符:本教程中显示的两个错误生成函数中的每一个都可以提供自己的分隔符,如下所示

<?php echo form_error('field name', '<div class="error">', '</div>'); ?>
OR
<?php echo validation_errors('<div class="error">', '</div>'); ?>

3. 在配置文件中设置分隔符:您可以在 application/config/form_validation.php 中添加错误分隔符,如下所示。在文件中设置这 2 个配置变量。$config['error_prefix'] ='<div class="error_prefix">';$config['error_suffix'] = '</div>';

参考链接:https ://www.codeigniter.com/userguide3/libraries/form_validation.html#sharing-the-error-delimiters

于 2018-05-21T14:04:01.230 回答
0

看一眼system/language/english/form_validation_lang.php

我相信你可以编辑它,或者将它复制到application/language/english/form_validation_lang.php

于 2012-06-30T23:16:46.410 回答
-8

为了使用 javascript 验证页面中的 devexpress 控件,请使用以下代码:

ASPxClientEdit.ValidateGroup(null);

或者

ASPxClientEdit.ValidateGroup('validationgroup');
于 2012-10-22T06:49:06.217 回答