Для авторизации по номеру телефона необходимо добавить соответствующее поле. Как это можно сделать рассказано в предыдущей статье.

По умолчанию в Presta Shop пользователи проходят авторизацию по E-mail. Зачастую это не удобно, и тогда возникает потребность в индентификации с помощью номера телефона. Чтобы проделать такого вида работ нам понадобится функция «Overrides», способная изменить стандартное поведение Presta Shop.

В папке по адресу /override/classes/form/ создадим файл CustomerLoginFormatter.php, отвечающий за вывод формы авторизации, и зададим ему класс.

class CustomerLoginFormatter extends CustomerLoginFormatterCore

Далее подкорректируем код,

’email’ => (new FormField)
->setName(‘phone’)
->setType(‘text’)
->setRequired(true)
->setLabel($this->translator->trans(
‘Phone’, [], ‘Shop.Forms.Labels’
))
->addConstraint(‘isPhoneNumber’),

Что позволит покупателю ввести телефонный номер и не валидировать данное поле, как E-mail.

Последнее действие заключается в переопределении класса Customer.php, а именно метода getByEmail, ответственного за
индентификации пользователя на сайте.

if (!Validate::isPhoneNumber($email) || ($plaintextPassword && !Validate::isPasswd($plaintextPassword))) {
die(Tools::displayError());
}

И сравнение логина в SQL запросе.

$sql->where(‘c.phone = ».pSQL($email).»’);

Поздравляем! Теперь пользователь может выполнить вход в личный кабинет интернет-магазина по номеру телефона.

Скачать исходные материалы