2011-02-02 5 views
1

CakePHPフォームから単一フィールドと複数フィールドの両方のデータを検証したいと思います。 フォームの送信時に複数のフィールドの検証を行う必要がある一方で、各フィールドのぼかしに対しては、単一フィールドの検証を行う必要があります。jQuery(AJAX)でCakePHPフォームのデータを検証する

データ検証のためにモデルで宣言された$validateプロパティを使用したいと思います。エラーを各フィールド(単一フィールド検証)の近くとフォームの上に表示したいと考えています(複数フィールド検証用)。

私の主な目標は、これを最も「カッキー」な方法(jQueryでデータを検証するためのものがある場合)にすることです。私はそこから有用なアドバイスを見つけることができませんでした、そして、私はあなたにこれを得るためのいくつかの助けを求めています。

私の懸念事項の1つは、フォームからjQueryにデータを渡し、検証を行うアクションにどのように渡さなければならないか、またエラーがあれば返す方法とエラーを表示する方法です。

ありがとうございます!

+0

私は、jQueryを使ってフィールドからデータを取得し、コントローラのアクションに送信することを考えました(グローバルかコントローラ固有かどうかはわかりません)。検証し、結果をメインフォームに戻すことができます。しかし、私はこれを行う方法を正確にはわかりません。 – linkyndy

答えて

0

これで自分の解決策をコーディングしましたが、私はまだまだもっと「カッキー」なアプローチを待っています。

私は2つのジェネリックjQuery関数を作成しました.1つは単一フィールド検証用で、もう1つは複数フィールド検証用です。この関数は、指定されたフォームからデータを取得し、AJAXを介してフォームのアクションに送信し、データを検証してAJAX応答を出力するように特別に作成されたコントローラメソッドに送信する必要があります(検証時には""、検証ではエラーはerrors) 。次に、結果はjQuery関数でチェックされ、検証が成功した場合にのみ、デフォルトのフォーム動作がトリガーされます。それ以外の場合は、エラーとreturn false;を表示して、デフォルトの送信を防止します。

1

まず、すべてがjQueryなしで動作することを確認してから、jQuery Form pluginを使用してフォームをAJAX経由で送信することをお勧めします。 RequestHandlerコンポーネントをAppControllerに含めると、コントローラはAJAXと同期要求を自動的に区別します。

+0

すべてが生のPHPで動作します。 OK、私はCakeのRequestHandlerを使って、データがAJAXリクエストか、通常のものかをチェックします。じゃあ何?また、**フォームからコントローラにデータを送信するにはどうしたらいいですか?つまり、 '$ this-> data'配列をjQueryを使ってフォームからコントローラに渡す簡単な方法がありますか? – linkyndy

+0

これはjQueryフォームプラグインの機能です。あなたはウェブサイト(上のリンク)からダウンロードし、そこの例に従う必要があります。 – Tomba

+0

私は例を見ましたが、私の問題に対する適切な解決策を見つけることができませんでした。私は現在自分自身のソリューションを実装しています。私が必要とすることをやり遂げる方法を見つけてくれることを願っています。 – linkyndy

関連する問題