3

我有一个名为 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 表单验证类,如果可以做到的话?

4

2 回答 2

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.";

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

于 2013-01-22T13:10:19.503 回答
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');
于 2013-01-22T13:02:40.903 回答