如何向codeigniter的Form Validation Class添加一个新函数

时间:2013-01-22 12:34:59

标签: php codeigniter codeigniter-2

我有一个名为website_check的函数

function website_check($url){
if ($url !=""){     
    if (preg_match("#^https?://.+#", $url) and fopen($url,"r")){
        return TRUE;
    }else{
        $this->form_validation->set_message('Website url', 'The %s field is invalid');
        return FALSE;
    }       
}else{
    $this->form_validation->set_message('Website url', 'The %s field is required');
    return FALSE;
}

}

我将此功能用作自定义代码点火器表单验证功能

$this->form_validation->set_rules('website', 'Website', 'callback_website_check');

我在每个控制器中都使用此函数,因此我想将此函数添加到codeigniters表单验证类中,并用作默认验证函数。是不是可以将你的函数添加到codeigniters表单验证类中,如果它是如何完成的呢?

2 个答案:

答案 0 :(得分:2)

是。在名为MY_Form_validation.php的应用程序/库目录中创建一个文件。使类名MY_Form_validation也是如此。确保它扩展了CI_Form_validation,并且它调用了父构造函数。然后,将您的规则添加为方法:

class MY_Form_validation extends CI_Form_validation {

public function __construct()
{
    parent::__construct();
}

public function website_check($url)
{
    if ($url != "") {     
        if (preg_match("#^https?://.+#", $url) and fopen($url,"r")) {
            return TRUE;
        } else {
            return FALSE;
        }       
    }else{
        return FALSE;
    }
}

}

您还需要将规则添加到form_validation_lang.php文件中(在application / language / en中)。只需将规则添加到底部,如下所示:

$lang['website_check']      = "The %s field is invalid.";

如果文件不存在,您可以从系统/语言文件夹中复制它。您不应编辑系统文件夹中的文件,因为更新时它们将被覆盖。

答案 1 :(得分:0)

编辑文件'system / libraries / Form_validation.php'并将此新函数插入“CI_Form_validation”类。

function website_check($url){  
   if (preg_match("#^https?://.+#", $url) and fopen($url,"r")){
      return TRUE;
   }else{
      return FALSE;
   }       
}

然后编辑文件'language / english / form_validation_lang.php'并附加此项目:

$lang['website_check'] = "The %s field is invalid";

然后将其用作:

$this->form_validation->set_rules('website', 'Website', 'website_check');