1

フォームの検証で奇妙な問題が発生しています。フォームに 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 サイトにこのようなものがあるのは嫌いです。

ありがとうございました。

4

1 に答える 1