Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【メール】 Eメールフィールドのグループ名とフィールド名が同じ場合のエラー文の表示がおかしい #1032

Open
tnagatomi opened this issue Apr 29, 2019 · 4 comments
Labels
Bug バグ Ver4 バージョン4

Comments

@tnagatomi
Copy link
Contributor

(このIssueはRedmineのチケットから移行されています)

作成者: 瀬戸 優一
作成日: 2018/07/26 13:10

■フィールド設定例
□ひとつめのフィールド
フィールド名: mail_test
項目名: mail_test
タイプ Eメール
項目見出し: mail_test
入力チェック: Eメールチェック(入力必須)
拡張入力チェック: Eメール比較チェック
グループ名: mail_test
グループ入力チェック: mail_test

□ふたつめのフィールド
フィールド名: mail_test2
項目名: mail_test2
タイプ Eメール
項目見出し: mail_test2
入力チェック: Eメールチェック(入力必須)
拡張入力チェック: Eメール比較チェック
グループ入力チェック: mail_test

■エラー
□エラーA
mail_testにメールアドレス以外を入力した場合に、「1」というエラーメッセージが表示される
(添付画像1)

□エラーB
mail_testにのみ、メールアドレスを入力した場合に、「必須項目です。」というエラーメッセージが表示されず、「1」というエラーメッセージのみ表示される。
(添付画像2)

@tnagatomi
Copy link
Contributor Author

投稿者: 加藤 朗
投稿日: 2018/07/27 00:53:01

加藤追記

設定を調整して、エラーメッセージを正常にしても、Eメールフィールドの比較チェックの際に、エラーメッセージの出方がおかしくなる例□メールアドレスフィールド名: email_1グループ名: グループ入力チェック: email




□確認用メールアドレスフィールド名: email_2グループ名: emailグループ入力チェック: email




email_2にメールアドレスを入れ email_1を空のままにするとemail_2に「必須項目です。」と出る(email_1 に「必須項目です。」と出るのが正しい)




email_1にメールアドレスを入れ email_2に a と入れるとemail_2に「入力データが一致していません。」と出るが、email_1に「形式が無効です。」と出る(email_1には何も出ない、もしくは「入力データが一致していません。」と出て、email_2に「形式が無効です。」「入力データが一致していません。」が出るのが正しい)

@tnagatomi
Copy link
Contributor Author

投稿者: 加藤 朗
投稿日: 2018/07/27 04:22:25

E-mail比較チェックにチェックを入れると・入力必須・E-Mail形式の判定の判定まで、E-mail比較チェックで行い、グループの一番最後に表示しようとするのでおかしな場所にエラーメッセージが出力されてしまう。

機能を切り分ける必要があります。・入力必須・E-Mail形式の判定はそれぞれのフィールドで判定し、一致するかどうかの判定だけをE-mail比較チェックで行う必要があります。




下記のようなコードでビュー側(mail_input.php)からE-mail比較チェックで行ってしまう余計な処理を消し、フィールドごとの処理を出力してやるようにすることで、一時対応は可能

// email比較チェックでは何故か「必須項目です」が表示されないので追記」
if($this->data['MailMessage'][$field['field_name']] == "") {
echo $this->Mailform->error("MailMessage." . $field['field_name'] , __("必須項目です。"));
} else {
// 必須以外のメッセージも表示
echo $this->Mailform->error("MailMessage." . $field['field_name']);
}

/* 説明欄 */
if (($this->BcArray->last($mailFields, $key)) ||
($field['group_field'] != $mailFields[$next_key]['MailField']['group_field']) ||
(!$field['group_field'] && !$mailFields[$next_key]['MailField']['group_field']) ||
($field['group_field'] != $mailFields[$next_key]['MailField']['group_field'] && $this->BcArray->first($mailFields, $key))) {

if ($field['group_valid']) {
    // email比較チェックは'group_field'ではなく'group_valid'
    echo $this->Mailform->error("MailMessage." . $field['group_valid'] . "_not_same", __("入力データが一致していません。"));
    echo $this->Mailform->error("MailMessage." . $field['group_field'] . "_not_complate", __("入力データが不完全です。"));

    if (!$this->Mailform->error("MailMessage." . $field['group_field'] . "_not_same")
        && !$this->Mailform->error("MailMessage." . $field['group_field'] . "_not_complate")) {
        $groupValidErrors = $this->Mailform->getGroupValidErrors($mailFields, $field['group_valid']);
        if ($groupValidErrors) {
            foreach ($groupValidErrors as $groupValidError) {
                // email比較チェックではグループ全体でメール形式のチェックを行う必要はない
                echo $groupValidError == '<div class="error-message">形式が無効です。</div>' ? '':$groupValidError;
            }
        //必須判定は個別に行うので、'group_valid'の処理はここまで
        } else {
            if(!$field['group_valid']){
                echo $this->Mailform->error("MailMessage." . $field['group_field'], __("必須項目です。"));
            }
        }
    }
}

echo '</span>';
echo "</td>\n    </tr>\n";

} else {
echo '';
}

@tnagatomi
Copy link
Contributor Author

投稿者: 加藤 朗
投稿日: 2018/07/27 05:26:16

問題を切り分けるため、Eメールフィールドの比較チェックの際に、エラーメッセージの出方がおかしくなる問題は別チケットに移しました。http://project.e-catchup.jp/issues/22093

@baserproject baserproject deleted a comment from tnagatomi May 16, 2019
@ryuring ryuring added the Bug バグ label May 16, 2019
@ryuring ryuring changed the title メールフォーム Eメールフィールドのグループ名とフィールド名が同じ場合のエラー文の表示がおかしい 【メール】 Eメールフィールドのグループ名とフィールド名が同じ場合のエラー文の表示がおかしい May 5, 2020
@kaburk
Copy link
Collaborator

kaburk commented Jul 28, 2021

baserCMS4.4.8でもこちらの問題を再現可能でした

スクリーンショット 2021-07-28 16 17 34

@ryuring ryuring added the Ver4 バージョン4 label Apr 14, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug バグ Ver4 バージョン4
Projects
None yet
Development

No branches or pull requests

3 participants