0

こんにちは私は codeigniter フォーム検証を使用しています。

私のライブラリでは、フォームの検証を設定しました

$this->ci->form_validation->set_rules ( 'businessemail', 'Business Email', 'required|xss_clean|min_length[6]|callback_valid_email_check' );

そして私のvalid_email_check機能

public function valid_email_check($email_address)
{
    if(!trim($email_address))
    {
        return TRUE;
    }
    $email_explode = explode("@", $email_address);

    $valid = preg_match("/^(?![_.])(?!.*[_.]{2})[a-zA-Z0-9._]+(?<![_.])$/",trim($email_explode[0]));

    if(!$valid)
    {
        $this->ci->form_validation->set_message('valid_email_check', 'The %s field contains invalid charaters');
        return FALSE;
    }
    else
    {
        return TRUE;
    }
}

その事は

required|xss_clean|min_length[6]

正しく検証されていますが、カスタム検証メッセージが機能していません。

私はここで何をしましたか、私は使用していると思いCIます、問題かもしれません、この問題を解決する方法、前もって感謝します

4

2 に答える 2

1

ライブラリで検証ルールを設定しているとあなたは言います。CodeIgniter のユーザー ガイドによると、これはコントローラーで行う必要があります。または、構成ファイルに保存することもできます。

これの目的は何ですか?-

if(!trim($email_address))
{
    return TRUE;
}

このロジックは、私には少し逆向きに思えます。たとえば、関数に空の文字列を渡すと、 が返されTRUEます。私が要点を見逃していない限り、それはあなたが達成しようとしているものではありません.

パラメータに追加trimして、関数から削除するだけです。$this->ci->form_validation->set_rulesvalid_email_check

valid_emailCIのルールをそのまま使って何が悪い?正当な理由がない限り、一からやり直しても意味がありません。

これは許容できる解決策ですか? -

$this->ci->form_validation->set_rules ('businessemail', 'Business Email', 'trim|required|xss_clean|min_length[6]|valid_email');

ライブラリを拡張しform_validation、これが機能する場所である場合は、接頭辞を付ける必要はありませんcallback_

于 2012-09-04T10:08:45.170 に答える
0

カスタム検証が機能していないことをどうやって知ることができますか?

以下は何を返しますか?

public function valid_email_check($email_address)
{
     this->ci->form_validation->set_message('valid_email_check', 'The %s field contains invalid charaters'); 
     return FALSE;
}

また、valid_email_check はどこにありますか? つまり、それはどのファイルにありますか?

于 2012-09-04T08:15:58.463 に答える