Переопределить логику работы корзины в 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 со следующим содержимым:
Далее, для подключения сервиса в консоле отправляю на выполнение следующий код:
Знатоки, подскажите пожалуйста в чем ошибка?
Вопрос к знатокам 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
Знатоки, подскажите пожалуйста в чем ошибка?
Комментарии: 2
А если воспользоваться maskedinput?!
С ее помощью можно сделает маску для ввода номера, но нельзя проверить на корректность ввода при отправке заказа или я не прав?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.