0

わかりました、何が機能していないのかわかりません。他のすべての機能が正常に機能するため、フォーム検証が確実に機能していることはわかっていますが、メッセージが true または false であり、どれも表示されないため、検証ルールをスキップしているように感じます..これは奇妙です.. .

$this->form_validation->set_rules('region', 'required|valid_region');

私のライブラリフォルダーの MY_Form_validation.php のルール。ライブラリが最初にロードされます。私が言ったように、私の reCaptcha など、他のすべての検証は適切に機能します。

function valid_region($str) {
        $this->load->database();
        if($this->db->query('SELECT id
                FROM region
                WHERE name = ?
                LIMIT 1', array($str))->num_rows() == 0) {
            //not a valid region name
            $this->set_message('valid_region', 'The %s field does not have a valid value!');
            return false;
        }

        $this->set_message('valid_region', 'Why is it validating?');
    }

どのメッセージも設定されないので、何も検証されていないように感じます!

4

3 に答える 3

3

set_rules()関数は3つのパラメーターを取ります

  1. フィールド名-フォームフィールドに付けた正確な名前。
  2. このフィールドの「人間」の名前。エラーメッセージに挿入されます。たとえば、フィールドの名前が「user」の場合、人間の名前を「Username」にすることができます。注:フィールド名を言語ファイルに保存する場合は、フィールド名の翻訳を参照してください。
  3. このフォームフィールドの検証ルール。

検証ルールを2番目のパラメーターとして配置します。そのため、検証は実行されていません。代わりにこれを試してください:

$this->form_validation->set_rules('region', 'Region', 'required|valid_region');
于 2012-12-14T02:36:38.723 に答える
2

それ以外の

$this->form_validation->set_rules('region', 'required|valid_region');

試す

$this->form_validation->set_rules('region', 'required|callback_valid_region');

カスタム検証ルールを使用する場合は、使用する必要があります

関数名を先頭に追加するコールバック。

アップデート

そして使う

$this->form_validation->set_message

それ以外の

$this->set_message

そしてfunction valid_region

return true検証が成功した場合に使用

于 2012-12-14T02:32:50.493 に答える
0
$this->form_validation->set_rules('region', 'Region', 'required|valid_region');

function valid_region() {
    $str = $this->input->post('name_of_input');
    $this->load->database();
    if($this->db->query('SELECT id
            FROM region
            WHERE name = ?
            LIMIT 1', array($str))->num_rows() == 0) { // why compare "=" between `name` field and array() ?
        //not a valid region name
        $this->form_validation->set_message('valid_region', 'The %s field does not have a valid value!');
        return false;
    }

    $this->form_validation->set_message('valid_region', 'Why is it validating?');
    return true;
}
于 2012-12-14T04:55:27.407 に答える