web-dev-qa-db-ja.com

カスタムbootstrapエラーメッセージ

私は管理者側でカスタムフォーム検証を行っており、以下はサンプルのJavaScriptコードです

Joomla.submitbutton = function(task)
  if(condition){
    document.getElementById('jform_acc_reseller_id').required=true;
    document.formvalidator.isValid(document.id('account-form'));
    return;
}

上記のコードは、以下のような標準エラーメッセージを示しています。

無効なフィールド:フィールドラベル

代わりに、以下のようなカスタムエラーメッセージを表示します

無効なフィールド:フィールドラベル:販売代理店ユーザーを選択してください

そんなことがあるものか?

2
Malaiselvan

カスタムバリデーター "validemail"をフォームXMLに追加したとします。

<field
            type="text"
            label="COM_HELPDESK_CC_LABEL"
            description="COM_HELPDESK_EMAIL_DESCRIPTION"
            name="cc"
            class="form-control validate-validemail"
            validate = "validemail"
        />

サーバー側の検証コードは、components/my_component/models/rules/validemail.phpにあります。

use Joomla\Registry\Registry;

JFormHelper::loadRuleClass('email');

class JFormRuleValidemail extends JFormRuleEmail {

    public function test(SimpleXMLElement $element, $value, $group = null, Registry $input = null, JForm $form = null) {
        $emails = array($value);
        if (strpos($value, ';') !== false) {
            $emails = explode(';', $value);
        }
        else if (strpos($value, ',') !== false) {
            $emails = explode(',', $value);
        }

        foreach ($emails as $email) {
            if (!parent::test($element, trim($email))) {
                $element->addAttribute('message', JText::_('YOUR_ERROR_MESSAGE'));
                return false;
                continue;
            }
        }

        return true;
    }

}

クライアント側の検証では、次のスクリプトをコンポーネント(バックエンド/フロントエンド)に追加します

jQuery('.validate').click(function (e) {
    var msg = {"error": []};
    if (jQuery('#jform_bcc').hasClass('invalid')) {
        msg.error.Push(Joomla.JText._('COM_HELPDESK_BCC_ERROR'));
    }
    if (jQuery('#jform_cc').hasClass('invalid')) {
        msg.error.Push(Joomla.JText._('COM_HELPDESK_CC_ERROR'));
    }
    if (jQuery('#jform_priority').hasClass('invalid')) {
        msg.error.Push(Joomla.JText._('COM_HELPDESK_PRIORITY_ERROR'));
    }
    if (jQuery('#jform_description').hasClass('invalid')) {
        msg.error.Push(Joomla.JText._('COM_HELPDESK_DESCRIPTION_ERROR'));
    }
    if (jQuery('#jform_subject').hasClass('invalid')) {
        msg.error.Push(Joomla.JText._('COM_HELPDESK_SUBJECT_ERROR'));
    }
    Joomla.renderMessages(msg);
    e.preventDefault();
});

});

この言語文字列を.iniファイルに入れます

COM_HELPDESK_SUBJECT_ERROR = "Please Enter Subject"
COM_HELPDESK_DESCRIPTION_ERROR = "Please Enter Description"
COM_HELPDESK_PRIORITY_ERROR = "Please Select Priority"
COM_HELPDESK_CC_ERROR = "Please Enter proper Emails in CC section"
COM_HELPDESK_BCC_ERROR = "Please Enter proper Emails in BCC section"

このメッセージをview.html.phpファイルに登録することを忘れないでください:

JText::script('COM_HELPDESK_SUBJECT_ERROR');
JText::script('COM_HELPDESK_DESCRIPTION_ERROR');
JText::script('COM_HELPDESK_PRIORITY_ERROR');
JText::script('COM_HELPDESK_CC_ERROR');
JText::script('COM_HELPDESK_BCC_ERROR');
2
Sahil Purav