Php phone 验证无效

Php phone validation doesn't work

我正在使用 Prestashop 1.6,我不是很喜欢 PHP,但我想对网站外观做 1 处更改。默认情况下,我有 2 phone 个输入:用于家庭和移动。 看起来像这样:

<div style="display: none" class="form-group is_customer_param">
                    <label for="phone">{l s='Home phone'}{if isset($one_phone_at_least) && $one_phone_at_least} <sup>**</sup>{/if}</label>
                    <input type="text" class="text form-control validate" name="phone" id="phone" data-validate="isPhoneNumber" value="{if isset($guestInformations) && isset($guestInformations.phone) && $guestInformations.phone}{$guestInformations.phone}{/if}" />
                </div>
                <div class="{if isset($one_phone_at_least) && $one_phone_at_least}required {/if}form-group">
                    <label for="phone_mobile">{l s='Mobile phone'}{if isset($one_phone_at_least) && $one_phone_at_least} <sup>*</sup>{/if}</label>
                    <input type="text" class="text form-control validate" name="phone_mobile" id="phone_mobile" data-validate="isPhoneNumber" value="{if isset($guestInformations) && isset($guestInformations.phone_mobile) && $guestInformations.phone_mobile}{$guestInformations.phone_mobile}{/if}" />
                </div>
                {if isset($one_phone_at_least) && $one_phone_at_least}
                    {assign var="atLeastOneExists" value=true}
                    <p class="inline-infos required">* Podaj nr telefonu</p>
                {/if}

我让第一个不可见,因为我认为一个填充的字段就足够了。它似乎是。但是我可以在不输入手机 phone 号码的情况下提交表格。你能看出这里的问题在哪里吗?或者我怎样才能让它发挥作用?

效果良好的字段示例,确实是必需的且未与其他字段配对:

    <div class="required form-group">
                        <label for="lastname_invoice">{l s='Last name'} <sup>*</sup></label>
                        <input type="text" class="form-control validate" id="lastname_invoice" name="lastname_invoice" data-validate="isName" value="{if isset($guestInformations) && isset($guestInformations.lastname_invoice) && $guestInformations.lastname_invoice}{$guestInformations.lastname_invoice}{/if}" />
                    </div>

我试过用这种方式验证手机:

<div class="required phone_mobile form-group">
                    <label for="phone_mobile">{l s='Mobile phone'} <sup>*</sup></label>
                    <input type="text" class="text form-control validate" name="phone_mobile" id="phone_mobile" data-validate="isPhoneNumber" value="{if isset($guestInformations) && isset($guestInformations.phone_mobile) && $guestInformations.phone_mobile}{$guestInformations.phone_mobile}{/if}" />
                </div>

但没有成功...

打开 controllers/front/ContactController。php 在函数 "postProcess()"

您可以输入制作该消息和发布所需的字段

强制执行 phone 号码会改变

强制将 phone 号码添加到列表中是 elseif:

} elseif (!(Tools::getValue('phone_mobile')||Tools::getValue('phone'))) {
            $this->errors[] = Tools::displayError('It is mandatory to enter a pleasant phone number.');
}

似乎 $one_phone_at_least 变量未设置为 true。从后台转到 Preferences > Customers 并确保 "Phone number is mandatory" 已打开。那应该可以解决它。

顺便说一下,required class 应该用在 input 上,而不是 form-group 容器。如果您进行了这一更改,您可能会阻止用户提交表单,但如果他们绕过它发送没有 phone 号码的数据,服务器将允许它。按照我第一段中的步骤,服务器还将要求设置一个 phone 数字。