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

はい。application/library ディレクトリに 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.";

ファイルが存在しない場合は、system/language フォルダーからコピーできます。システム フォルダー内のファイルは、更新時に上書きされるため、編集しないでください。

于 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 に答える