2010-12-06 5 views
4

ユーザのコントローラとlogin()とregister()アクションを参照する要素に、ログインフォームと登録フォームがあります。たとえば、この要素をモーダルまたはページコントローラアクションで使用すると、ユーザーが検証エラー(モデル検証)をしているときに、要素を更新するのではなくログイン/登録アクションページにリダイレクトされます。CakePHP要素のエラー処理に関する質問

私はJavascript/JQueryの検証を使用することができますが、エラーが発生したときに元のアクションのページにリダイレクトするのではなく、CakePHPのモデル検証で要素を更新する方法はありますか?

答えて

3

私は過去にこの問題をthis PersistentValidation componentで解決しました。あなたが設定する方法は、UsersControllerPersistentValidationコンポーネントを含めることと、login/register要素を含める予定の他のコントローラを含めることです。

あなたのログイン/登録フォームは、それぞれのコントローラのアクションに送信されます。検証が失敗した場合、アクションは参照ページにリダイレクトされます。たとえば、

if (!$validated) { 
    $this->redirect($this->referer()); 
} 

リダイレクトするアクションによって呼び出されたビューには、前のリクエストからの検証エラーが自動的に入力されます。

これは、検証エラーをセッション変数に格納し、リダイレクト後にこれらのエラーを取得して、現在の要求のビュー/要素で使用できるようにすることで、機能します。あなたはこれを自分で行うことができますが、コンポーネントを使用することは非常に苦労します。

+0

ブリリアント!ありがとうございました – Justin

+0

私はこれを使用してユーザーを作成し、if($ this-> User-> save($ this-> data)){[create code]} else { $ this-> redirect($ this-> referer()); }では、要素が存在するページにはリダイレクトされませんが、モデルで定義されているエラーメッセージは表示されません。何がここで働いていないか知っていますか?ありがとう!しかし、ユーザーのログインは正常に動作します... – Justin

+0

これは正常に動作しましたか?私は今同じ問題を抱えています...私はリダイレクトされますが、エラーは表示されません! – linkyndy

関連する問題