Переопределить логику работы корзины в minishop2

Всем здравствуйте!

Вопрос к знатокам minishop2. Необходимо переопределить логику работы корзины в minishop2

Нужно сделать проверку номера телефона по маске при оформлении заказа.

Из документации (https://docs.modx.pro/components/minishop2/development/service/order) я понял, что для этого нужно подключить свой класс заказа и переопределить в нём проверку phone.

Для этого нужно подключить свой класс расширяющий msOrderHandler и изменить метод msOrderHandler::validate()

Для подключения своего класса я воспользовался инструкцией docs.modx.pro/components/minishop2/development/service/connection

Создал файл msOrderHandler_my.class.php со следующим содержимым:

<?php
class myOrderHandler_my extends msOrderHandler {
public function validate($key, $value) {
    switch ($key) {
        case 'phone':
            $value = preg_match('\+7\([0-9]{3}\) [0-9]{3}-[0-9]{2}-[0-9]{2}', $value) ? trim($value) : @$this->order[$key];
        break;
        // Конечно, также можно переопределить и другие валидаторы

        // Если прислано поле, которого тут нет - отправляем в дефолтный класс
        default:
            return parent::validate($key, $value);
    }
    if ($value === false) {
        $value = '';
    }

    return $value;
}
}
И положил msOrderHandler_my.class.php в директорию core/components/minishop2/custom/order

Далее, для подключения сервиса в консоле отправляю на выполнение следующий код:

<?php
if ($miniShop2 = $modx->getService('miniShop2')) {
    $miniShop2->addService('order', 'myOrderHandler_my','{core_path}components/minishop2/custom/order/msOrderHandler_my.class.php');
}
И получаю ошибку:
[2017-01-24 12:40:18] (ERROR @ /home/s4459/www/core/xpdo/xpdo.class.php : 644)
Could not load class: miniShop2 from minishop2.
[2017-01-24 12:40:18] (ERROR @ /home/s4459/www/core/xpdo/xpdo.class.php : 1247)
Problem getting service miniShop2, instance of class miniShop2, from path


Знатоки, подскажите пожалуйста в чем ошибка?
Михаил
24 января 2017, 10:05
modx.pro
1 917
0

Комментарии: 2

man
man
24 января 2017, 13:17
0
А если воспользоваться maskedinput?!
    Михаил
    24 января 2017, 13:22
    0
    С ее помощью можно сделает маску для ввода номера, но нельзя проверить на корректность ввода при отправке заказа или я не прав?
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      2