2


0

コード検証ツールのフォームフィールドではなくフォーム全体にフォーム検証ルールを設定するにはどうすればよいですか?

主題が言うように…​ code-igniterでフォームフィールドの代わりにフォーム全体にフォーム検証ルールを設定する方法は?

// Définir les règles de validation du formulaire de création de compte
$this->form_validation->set_rules('username', 'Nom d\'usagé', 'required');
$this->form_validation->set_rules('password', 'Mot de passe', 'required|callback_authentification_check');

上記のコードを検討してください。 callback_authentification_checkを呼び出して、ユーザー名とパスワードが一致するかどうかを確認します。 ただし、これはフォーム検証プロセス全体であるため、パスワードフィールドに添付する必要があります。

それで、これを行う最良の方法は何ですか?

ありがとうございます。

1 Answer


3


簡単に言えば、通常のフォーム検証ルールを実行し、フォーム検証ルールとしてではなく、フィールドの有効性をチェックした後に「コールバック」を実行します。

if ($this->form_validation->run() && my_callback() == TRUE)
{
    // OK!
}

しかしながら:

今のあなたのやり方には「間違った」ことは何もありませんが、私はあなたの懸念を理解しています。 検証ルールは定義された順序で実行されるため、コールバックを最後に実行すると、以前のルールで定義された「有効な」データを確実に処理できます。 そこから他の `$ _POST`データにアクセスできます。