16

CodeIgniter を使用してフォーム検証クラスを作成しています。名前と値のペアでエラー メッセージを取得する方法はありますか? たとえば、サンプル フォームには、 、 、 、 の 4 つのフィールドuser_namepasswordありpassword_confますtimezone。それらの中で、次の実行後user_namepassword検証に失敗しました:

$result = $this->form_validation->run();

上記の関数が false を返す場合、次のような名前と値のペアでエラーを取得したいと考えています。

Array
{
  'user_name' => 'user name is required',
  'password' => 'passord is required'
}

私は、AJAX 呼び出しに戻すことができる JSON を作成したいと考えています。私は(汚い)解決策を持っています:次のように検証メソッドを1つずつ呼び出すことができます:

$this->form_validation->required($user_name);
$this->form_validation->required($password);

名前と値のペアですべてのエラー メッセージを一度に取得する他の方法はありますか?

編集:答えの1つからjQueryで検証を行うことが提案されました:

jQuery はクライアント側の検証に役立ちますが、サーバー側はどうでしょうか。ここでは CodeIgniter 検証を使用しています。

私はそれを次のように設計しました:

  1. AJAX を使用してすべての値を投稿します。
  2. サーバー側 (PHP) で検証します。
  3. 入力が有効な場合は、目的の操作を実行します。そうでなければ、ユーザーにエラーを返します。
4

7 に答える 7

4

あなたは単に使用することができます、

$this->form_validation->error_array();

これは、CodeIgniterのクラス リファレンス ドキュメントからのものです。

于 2016-11-13T20:02:05.587 に答える
1

私が最も気に入っている解決策は、どこにも関数を追加したり、検証ライブラリを拡張したりすることではありません。

$validator =& _get_validation_object();
$error_messages = $validator->_error_array;

参照: http://thesimplesynthesis.com/post/how-to-get-form-validation-errors-as-an-array-in-codeigniter/

コードのどの時点でもこれを呼び出すことができるはずです。また、これについても議論する新しいスレッドがあることに注意してください。

于 2013-03-21T14:35:55.223 に答える
0

通常のページ更新時にコード イグナイターの検証でエラー メッセージが表示されるのを見ると、フォームを送信する前にクライアント側全体を検証するjquery 検証プラグインのようなものを使用する方がよいのではないでしょうか? そのようにAJAXは必要ありません。

編集:サーバー側の検証を行わないことを提案しているわけではありません。検証のためにAJAXを使用して投稿する必要はなく、クライアント側で行うとサーバーのヒットが減少します。エラーが表示されるか、成功メッセージが表示される通常のページ更新に正常に低下します。

于 2009-01-22T11:22:56.807 に答える