1

奇妙な問題があります。右上にログイン パネルがあるページがあります。

ページの中央のどこかに登録フォームがあります。

ログインフォームと登録フォームの両方に、ユーザーモデルのユーザー名とパスワードのフィールドがあります。

私の問題は、登録フォームが送信されたときに検証ルールがアクティブになっているが、それが表示されていることです

私が望まない登録フォームとログインフォームの両方で。

登録フォームを送信すると登録フォームのみが検証され、その逆も同様です。

私はこれに対する回避策を見つけることができませんでした.plzは私を正しい方向に導きます.

4

2 に答える 2

1

投稿されたフォームでのみ検証エラーを表示し、他のフォームでは表示しないようにするには、送信ボタンの名前でエラーが表示されるビューにチェックを追加できます。両方のフォームの送信ボタンには、submit1 と submit2 という異なる名前があります。

// In Form1
if(isset($_POST['data']['form1']['submit1']))
{
 //display validations for form1
}

// In Form2
if(isset($_POST['data']['form2']['submit2']))
{
 //display validations for form2
}
于 2013-05-24T08:00:08.140 に答える
0

同じページのログインと登録フォームで同様の問題が発生しました。

検証エラーの問題を回避する方法は、ログイン フォーム要素のラベルを変更して、「ユーザー」ではなく「ログイン」とラベル付けすることです。たとえば、$this->Form->input('User.email')I haveの代わりに$this->Form->input('Login.email'). 次に、各フォームに非表示の「ステップ」フィールドを含め、フォームが送信されたときにどれが存在するかを確認します。

ログインフォームが送信されている場合は、続行する前にログインフォーム要素を正しいモデルに切り替えます:-

$this->request->data['User'] = $this->request->data['Login'];

このように、ロジックはビューではなくコントローラーにあります。

于 2013-05-29T14:15:35.140 に答える