0

jQuery ajaxを使用して送信するフォームがあり、フォームデータを使用して必要なその他のタスクを検証および実行するために、送信と呼ばれるコントローラー関数に送信されます。ユーザー名に小文字と数字のみが含まれていないのに、フォーム検証ライブラリにエラーが表示されない理由を調べようとしています。

$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean|strtolower');

フォーム送信後のPOST値:

username    TestingUSER

編集:

私の知る限り、それはphpサーバー側に正しく到達します。

PHP:

public function submit()
{
    $output_status = 'Notice';
    $output_title = 'Not Processed';
    $output_message = 'The request was unprocessed!';

    $this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean|strtolower');
    $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean');
    $this->form_validation->set_rules('remember', 'Remember Me', 'trim|xss_clean|integer');

    if ($this->form_validation->run() == TRUE)
    {

    }
    else
    {
        $output_status = 'Error';
        $output_title = 'Form Not Validated';
        $output_message = validation_errors();
    }

    echo json_encode(array('output_status' => $output_status, 'output_title' => $output_title, 'output_message' => $output_message));
}

編集2:

シェイクの答えに基づいています。「フィールド名に対応するエラーメッセージにアクセスできません」という応答が返されます。タイトルに対してフォームが検証されていないと表示されるため、メッセージは機能しません。

public function check_username($str)
{
    if (preg_match('#[0-9]#', $str) && preg_match('#[a-z]#', $str)) 
    {
        return TRUE;
    }
    $this->form_validation->set_message('username', 'This is not have an accepted value!');
    return FALSE;
}

編集3:

私がやりたいのは、検証エラーはあるが、pnotify応答には特定のエラーがないことを報告してもらうことです。ただし、フォーム要素の下に特定のエラーを表示したいのですが。

jQueryコード:

http://pastebin.com/1KehMJkh

ログインフォーム:

http://pastebin.com/EfpBfbfN

4

1 に答える 1

1

コントローラでコールバック関数を使用できると思います

public function check_username($str)
{
    if (preg_match('#[a-z0-9]#', $str)) {
        return TRUE;
    }
    $this->form_validation->set_message('check_username', 'This is not have an accepted value!');
    return FALSE;
}

の検証ルールusername

$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean|callback_check_username');

あなたもこれが好きかもしれません

于 2012-12-17T20:02:38.097 に答える