Проверка телефона Php не работает

Я работаю с Prestashop 1.6, я не очень разбираюсь в PHP, но я хотел сделать 1 изменение внешнего вида сайта. По умолчанию у меня 2 телефонных входа: для дома и для мобильного.
Это выглядит так:

<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}

Я сделал первый не видимым, потому что я думал, что одного заполненного поля будет достаточно. И это похоже на. Но я могу отправить форму без ввода номера мобильного телефона. Вы видите, может быть, здесь проблема? Или, может быть, как я могу заставить его работать?

Пример поля, которое работает хорошо, действительно необходимо и не связано с другим полем:

    <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>

но безуспешно …

0

Решение

Похоже, $one_phone_at_least переменная не установлена ​​в true, Из бэк-офиса, перейти к предпочтения > Клиенты и убедитесь, что «Номер телефона является обязательным» включен. Это должно исправить это.

Кстати, required класс должен быть использован на input, не form-group контейнер. Если вы сделали это одно изменение, вы могли бы запретить пользователю отправлять форму, но если бы они обходили ее, отправляя данные без номера телефона, сервер разрешил бы это. Следуя шагам, описанным в моем первом абзаце, сервер также потребует, чтобы номер телефона был установлен.

2

Другие решения

Открыть контроллеры / фронт / ContactController.php
в функции «postProcess ()»

Вы можете ввести такие поля, необходимые для создания этого сообщения и освобождения

чтобы сделать обязательным, изменился бы номер телефона

для обязательности добавьте номер телефона в список, если:

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

По вопросам рекламы [email protected]