フォームの検証で奇妙な問題が発生しています。フォームに 4 つの入力があり、すべて検証中です。
メール入力フィールドである最後の入力フィールドを検証するまで、すべてが正常に機能します。メール入力フィールドに , という 2 つのルールを設定してい'rule' => 'notEmpty'
ます'rule' => 'email'
。フォームは、notEmpty ルールをチェックするだけで問題なく検証および投稿されますが、無効な電子メールが見つかった場合は検証されますが、有効な電子メールを入力した後でも投稿されません。
ここにいくつかのシナリオがあります:
1: ユーザーがすべての入力に対して有効なエントリを入力します
すべてが正常に機能し、フォームが送信され、データがデータベースに追加されます。
2: ユーザーが電子メール以外のすべての入力に有効なエントリを入力した後、すべての入力に有効な電子メールを入力
した場合 ユーザーが最初の 3 つのフィールドに入力しただけで [送信] をクリックしたと仮定すると、最初
に有効な電子メール アドレスを入力した後はすべて正常に機能します。 、フォームの投稿とデータがデータベースに追加されます。
3: ユーザーが電子メール以外のすべてに有効なエントリを入力する (無効な電子メールを提供する)
エラー メッセージが表示されますが、有効な電子メール アドレスを提供しても何もしません。送信ボタンをクリックし続けると、ページが同じデータでリロードされ続けることに気付きました。
また、送信ボタンを最初にクリックした後に再度クリックすると、エラー メッセージが消えます。
ここに私のモデルがあります:
class Member extends AppModel
{
public $validate = array(
'id' => array(
'rule' => 'notEmpty'
),
'Student_First_Name' => array(
'rule' => 'notEmpty'
),
'Student_Last_Name' => array(
'rule' => 'notEmpty'
),
'Student_Email' => array(
'emailRule-1' => array(
'rule' => 'notEmpty',
'last' => false
),
'emailRule-2' => array(
'rule' => 'email',
'message' => 'Please enter a valid email address.'
))
);
}
コントローラーは次のとおりです。
class MembersController extends AppController
{
...
public function add()
{
if($this->request->is('post'))
{
$this->Member->create();
if($this->Member->save($this->request->data))
{
$this->Session->setFlash('Member has been added!');
$this->redirect( array( 'action' => 'members'));
}
else
{
$this->Session->setFlash('Unable to add member.');
}
}
}
}
このような単純な/煩わしい問題について、このように長い投稿をして申し訳ありませんが、アプリケーション/Web サイトにこのようなものがあるのは嫌いです。
ありがとうございました。