alpha!
- Тестовый логин брать тут
- Айди тарифов тут
- Поправить в JS идентификатор формы, используемой сниппетом Order
В сниппете Order есть поле delivery_method
. Плагин автоматически добавляет туда поля city
, street
, house
и flat
-- город, улица, дом и квартира соответственно. Другие плагины могут добавить туда свои значения!
Задаём в сниппете Order свои правила валидации под названием &cdekRules
. Проверяем на пустоту город, улицу и дом. (Номера квартиры может и не быть)
&cdekRules=`{
"name":{
"required":"Введите имя",
"matches":{
"params":"\/^[\\pL\\s\\-']++$\/uD",
"message":"Введите имя правильно"
}
},
"email":{
"required":"Введите email",
"email":"Неверная почта"
},
"phone":{
"required":"Введите номер телефона",
"phone":"Неверный телефон"
},
"city": {
"lengthBetween": {
"params": [2, 255],
"message": "Введите город"
}
},
"street": {
"lengthBetween": {
"params": [2, 255],
"message": "Введите улицу"
}
},
"house": {
"required":"Введите номер дома"
}
}`
Делаем сниппет orderSelect
(название произвольное) и ставим его в &prepare
.
Внутри что-то подобное:
<?php
if ($FormLister->getField('delivery_method') == 'sdek') {
$FormLister->config->setConfig(array(
'rules'=>$FormLister->getCFGDef('cdekRules'),
));
}
else if( $FormLister->getField('delivery_method') == 'fixed' ){
$FormLister->config->setConfig(array(
'rules'=>$FormLister->getCFGDef('fixedRules'),
));
}
Где cdekRules
- это и есть название ваших параметров валидации в случае, если юзер выбрал СДЭК.
Для примера добавил fixedRules
- это параметры, когда выбрана "Фиксированная доставка". Можно убрать. По-умолчанию, если не выбрана доставка sdek
или fixed
, будут использованы обычные правила валидации из параметра &rules
.