web-dev-qa-db-ja.com

JFormでJHtml :: _( 'behavior.formvalidator')を使用すると、空のエラーメッセージが表示される

私はJoomlaを使用しています! 3.4コアフォームの検証とそれは完全に起動するようですが、アラートに追加されたエラーメッセージは空白であるため、エラーを確認できません。

何が悪いのですか?

これが私のJForm XMLマニフェストです。

<?xml version="1.0" encoding="utf-8"?>
<form class="form-validate">
    <fieldset name="lead" label="Apply now!" description="Complete the form below to receive your unique code">
        <field name="name" type="text" hiddenLabel="true" class="input-block validate required" hint="Name"
               description="Your full name" label="Name" filter="string" required="true" />
        <field name="surname" type="text" hiddenLabel="true" class="input-block validate required" hint="Surname"
               description="JGLOBAL_FIELD_ID_DESC" filter="string" required="true" />
        <field name="cellphone" type="text" hiddenLabel="true" class="input-block validate required"
               hint="Cellphone number" required="true" />
        <field name="email" type="text" hiddenLabel="true" class="input-block  validate required validate-email"
               hint="Email address" filter="string" required="true" />
        <field name="membership_number" type="text" hiddenLabel="true" class="input-block validate required"
               hint="Membership number"/>
    </fieldset>
</form>

そして、私のフォームHTMLはこれでレンダリングされます:

<form id="pb-apply-lead-form" action="<?php echo JRoute::_('index.php'); ?>" method="post" class="form-validate">
    <fieldset class="pb-apply-lead-fieldset">
        <?php
        # Load keep-alive, will prevent form from expiring
        JHtml::_('behavior.keepalive');
        JHtml::_('behavior.tooltip');

        if (J33)
            JHtml::_('behavior.formvalidation'); // J!3.3

        if (J34)
            JHtml::_('behavior.formvalidator'); // J!3.4

        /** @var JForm $lead_form */
        $lead_form = JForm::getInstance('lead', JPATH_COMPONENT . '/models/forms/lead.xml');
        $fieldset  = $lead_form->getFieldsets();
        ?>
        <div class="pb-title-container">
            <h3><?php echo $fieldset['lead']->label; ?></h3>
            <h4><?php echo $fieldset['lead']->description; ?></h4>
        </div>
        <div class="form-fields">
            <div class="row">
                <?php
                # Render out fieldset, use override for fields provided in layouts
                echo $lead_form->renderFieldset('lead');
                ?>
            </div>
        </div>
        <div class="form-button">
            <input type="submit" name="submit" value="<?php echo JText::_('COM_BULKBUYER_VIEW_APPLY_FORM_BUTTON_SUBMIT'); ?>" class="validate btn btn-primary"/>
            <input type="hidden" name="option" value="com_bulkbuyer"/>
            <input type="hidden" name="task" value="apply.submitlead"/>
            <input type="hidden" name="return" value="<?php echo JUri::current(); ?>"/>
            <input type="hidden" name="id" value="<?php echo $item->id; ?>"/>
            <?php echo JHtml::_('form.token'); ?>
        </div>
    </fieldset>
</form>

助けてくれてありがとう。

2

問題は、エラーメッセージを設定していないため、エラーメッセージが表示されないことです。あなたが含める必要があります:

message = "このフィールドは必須です!"

Description = ""を使用しており、これはフィールドのツールチップに表示されます。

したがって、コードは次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<form class="form-validate">
    <fieldset name="lead" label="Apply now!" message="Complete the form below to receive your unique code">
        <field name="name" type="text" hiddenLabel="true" class="input-block validate required" hint="Name"
               message="Your full name" label="Name" filter="string" required="true" />
        <field name="surname" type="text" hiddenLabel="true" class="input-block validate required" hint="Surname"
               message="JGLOBAL_FIELD_ID_DESC" filter="string" required="true" />
        <field name="cellphone" type="text" hiddenLabel="true" class="input-block validate required"
               hint="Cellphone number" required="true" />
        <field name="email" type="text" hiddenLabel="true" class="input-block  validate required validate-email"
               hint="Email address" filter="string" required="true" />
        <field name="membership_number" type="text" hiddenLabel="true" class="input-block validate required"
               hint="Membership number"/>
    </fieldset>
</form>

参照: https://docs.joomla.org/Text_form_field_type

JFormテキストフィールドの使用法について。

2
tonypartridge