【问题标题】:CodeIgniter 3.1.9 Form ValidationCodeIgniter 3.1.9 表单验证
【发布时间】:2018-12-08 11:20:55
【问题描述】:

我在 CI 中的表单验证存在问题。 该规则似乎没有调用该函数 我的代码如下:

[...]    
$this->form_validation->set_rules('last_name', 'last name','trim|required|min_length[3]|max_length[30]|callback_reserved',
    [
        'required'      => 'The %s is missed',
        'min_length'    => 'The %s must contain at least %s letters',
        'max_length'    => 'The %s must contain at max %s letters',
    ]);
[...]

function reserved($str) {
    $reserved = ['aaaa','bbbb','cccc','dddd'];
    if (in_array(strtolower($str), $reserved)) {
        $this->form_validation->set_message('reserved', 'The {field} '.$str.' is reserved');
        return false;
    } else {
        return true;
    }
}

【问题讨论】:

  • 您好,欢迎来到 StackOverflow!请分享您的实际问题,而不仅仅是一段代码。很不清楚你在问什么:/你可能想阅读stackoverflow.com/help/how-to-ask以获得专业提示:)
  • 我已经用一种更好的非复杂方法来创建自定义验证规则,因为使用回调有点复杂,你必须在控制器而不是模型中创建规则等等.. 所以如果你喜欢这种方式,我可以解释一下。

标签: codeigniter validation validationrules reserved


【解决方案1】:

这是创建自定义验证规则的更好方法:

$config = array(
    'field'     => 'last_name',
    'label'     => 'last name',
    'rules'     => array('trim', 'required', array('last_name_is_reserved',
        function($str)
        {
            $reserved = ['aaaa','bbbb','cccc','dddd'];
            return (in_array(strtolower($str), $reserved)) ? TRUE : FALSE;
        }),
    ),
    'errors' => array(
        'last_name_is_reserved' => 'The {field} field is reserved.',
    ),
);
$this->form_validation->set_rules($config);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-06
    • 2016-09-05
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多