Как подключать разную валидацию в зависимости от доставки?

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

user23
user23
Репутация: 0
Сообщения: 45
Зарегистрирован: 01.11.2019
С нами: 4 года 4 месяца

Сообщение #1 user23 » 05.12.2022, 20:27

Вопрос такого плана,
Сайт на окай 2
для разных способов доставки понадобилось сделать разную валидацию полей.(обязательные или нет)

Код: Выделить всё

            $validate_name = false;
            $validate_email = false;
            $validate_phone = false;

            if ($order->delivery_id == 2) {
                $validate_name = true;
                $validate_email = true;
                $validate_phone = true;
            } else {
                $validate_phone = true;
            }
           
            if (!$this->validate->is_name($order->name, $validate_name)) {
                $this->design->assign('error', 'empty_name');
            } elseif (!$this->validate->is_email($order->email, $validate_email)) {
                $this->design->assign('error', 'empty_email');
            } elseif (!$this->validate->is_phone($order->phone, $validate_phone)) {
                $this->design->assign('error', 'empty_phone');
            }
           


В принципе на стороне корзины работает данное решение.

А вот с валидацией сложнее.

Думал сделать так, 2 валидации

Код: Выделить всё

 
     if ($(".fn_validate_cart").size() > 0) {
        $(".fn_validate_cart").validate({
            rules: {
                name: "required",
                phone: "required",
                email: {
                    required: true,
                    email: true
                },
                captcha_code: "required"
            },
            messages: {
                name: form_enter_name,
                phone: form_enter_phone,
                email: form_enter_email,
                captcha_code: form_error_captcha,
            }
        });
    }
 
    if ($(".fn_validate_cart_phone").size() > 0) {
        $(".fn_validate_cart_phone").validate({
            rules: {
                phone: "required",
                captcha_code: "required"
            },
            messages: {
                phone: form_enter_phone,
                captcha_code: form_error_captcha,
            }
        });
    }




и думал что меняя классы буду запускать определенную валидацию. Но не работает. постоянно требует заполнить 3 поля. Как на стороне script.tpl сдлеать чтоб можно было валидацию переключать в зависимости от доставки?

dimitriy
Аватара
dimitriy
Репутация: 4
Сообщения: 92
Зарегистрирован: 26.06.2016
С нами: 7 лет 9 месяцев

Сообщение #2 dimitriy » 06.12.2022, 07:11

да, весьма актуальный вопрос.. а еще интересно, как убрать дублирование адреса в курьерской доставке ( зачем он там- если адрес уже выше указан?)
а также зачем то фраза "наложенный платёж" в курьерской доставке.
да и поле емэйл хорошо бы сделать необязательным..
нынче все в whatsapp сидят телефона выше крыши хватает

viewtopic.php?f=10&t=2403&p=11873#p11873 хотя вот тут есть про необязательные и обязательные поля


Название раздела: Вопросы по работе с OkayCMS
Правила раздела: faq.php?mode=okay

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения

   

Вернуться в «Вопросы по работе с OkayCMS»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 27 гостей