[FetchIt] - Дополнительная валидация с помощью библиотеки yup

В данной заметке я расскажу как подружить компонент FetchIt с популярной библиотекой yup и реализовать дополнительную валидацию на стороне клиента.
Допустим, что нам необходимо обработать несложную форму с двумя полями, имя и возраст. И логика будет заключаться в том, если пользователь указывает свой возраст и он оказывается ниже 18-ти то мы не дадим отправить форму и покажем сообщение.


Баха Волков
21 марта 2023, 19:00
modx.pro
1
2 220
+11

msOrderFields и отправка файла в сообщении

Здравствуйте!
Создал два дополнительных поля при помощи данного дополнения в оформлении заказа типов: Date и File
В форме фронтенда они отражаются и работают корректно (можно внести дату и загрузить файл).
В письме менеджеру дата отображается корректно, а вложенного файла нет. При этом если плейсхолдер прописать в письме то выводится фейковый путь и правильное наименование файла C:\fakepath\Имя_файла
Форма разумеется имеет enctype=«multipart/form-data»
Подскажите, пожалуйста, как настроить чтобы файл отправлялся вместе с письмом менеджеру о создании нового заказа?
newbmod
21 марта 2023, 18:11
modx.pro
612
0

Вывести размер файла

Есть ли возможность вывести размер файла и разрешение в верстку, который передается через ссылку?
Есть пдф файл, который передается на ссылку на свг иконку, можно ли рядом вывести его размер и разрешение?
Владислав
21 марта 2023, 15:26
modx.pro
415
0

msPromoCode при загрузке корзины по ajax

Добрый день, сам компонент работает по ajax, и при загрузке корзины по ajax функционал компонента не работает. не запускаются, тк они вызываются потом в футере, Может быть подскажите решение данной проблемы?
Евгений
21 марта 2023, 13:34
modx.pro
395
0

oneBooking

Здравствуйте!

использую onebooking 4.0.2-pl для брони номеров. После чистки кеша руками первые 2 заявки норм, поом он начинает их дублировать, что в админке, что на мейл…

Вызов: [[!obCalendar? &objects=`1` &interface=`form` &type=`period` ]]

Не подскажите, в чем может быть проблема?
Антон
21 марта 2023, 11:54
modx.pro
517
0

Корзина minishop 2

добрый день! в магазине у товара есть несколько размеров, как сделать так чтобы в корзину можно было положить максимум 3 в не зависимости от того какой размер выбран и какой товар, то есть если у одного товара выбран какой-то размер в количестве 2, то другого размера этого же товар или другой можно было положить в корзину только 1.
Михаил
21 марта 2023, 11:42
modx.pro
747
0

Ошибка cant find jQuery AjaxForm plugin

Здравствуйте!

При вызове формы сталкиваюсь с ошибкой на странице — cant find jQuery AjaxForm plugin

Хотя в head все подключаю:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script> 
    <script src="https://malsup.github.io/jquery.form.js"></script>
Подскажите, пожалуйста, в чем может быть проблема?
Не могу найти…

MODX Revo 2.8.3
Антон
20 марта 2023, 22:32
modx.pro
833
0

modx3 и php8

Привет,
у меня следующая проблема

ERROR @ /core/components/pdotools/src/Fetch.php : 229) PHP warning: Array to string conversion
и
/core/src/Revolution/Processors/Workspace/Packages/GetList.php : 228) PHP warning: Trying to access array offset on value of type null
и
ERROR @ /core/src/Revolution/modTemplateVar.php : 331) PHP warning: Undefined array key "class_key"
и
/core/src/Revolution/modX.php : 2584) Could not prepare context: mgr
и
(ERROR @ /core/cache/includes/elements/modx/revolution/modplugin/1.include.cache.php : 38) PHP warning: Undefined array key "q"
и
ERROR @ /core/components/modxminify/model/modxminify/modxminify.class.php : 186) PHP warning: Undefined variable $skip
и
ERROR @ /connectors/lang.js.php : 64) PHP warning: preg_match(): Delimiter must not be alphanumeric, backslash, or NUL
modx 3.0.3-pl
php 8.2.4
nginx

modplugin 1
<?php
if ($modx->context->get('key') !== 'mgr') {

    $contexts = array();

    $cacheKey = $modx->getOption('cache_context_map_key', $scriptProperties, 'context_map');
    $cacheOptions = array(
        xPDO::OPT_CACHE_HANDLER => $modx->getOption("cache_{$cacheKey}_handler", $scriptProperties, $modx->getOption(xPDO::OPT_CACHE_HANDLER)),
        xPDO::OPT_CACHE_EXPIRES => $modx->getOption("cache_{$cacheKey}_expires", $scriptProperties, $modx->getOption(xPDO::OPT_CACHE_EXPIRES)),
    );
    /** @var xPDOCache $contextCache */
    $contextCache = $modx->cacheManager->getCacheProvider($cacheKey, $cacheOptions);

    if ($contextCache) {
        $contexts = $contextCache->get('context_map');
    }

    if (empty($contexts)) {
        /** @var modContext $contextsGraph */
        $query = $modx->newQuery('modContext');
        $query->where(array('modContext.key:NOT IN' => array('web', 'mgr')));
        $query->sortby($modx->escape('modContext') . '.' . $modx->escape('key'), 'ASC');
        $contextsGraph = $modx->getCollectionGraph('modContext', '{"ContextSettings":{}}', $query);
        foreach ($contextsGraph as $context) {
            $contextSettings = array();
            foreach ($context->ContextSettings as $cSetting) {
                $contextSettings[$cSetting->get('key')] = $cSetting->get('value');
            }
            $contexts[$context->get('key')] = $contextSettings;
        }
        unset($contextsGraph);
        if ($contextCache) {
            $contextCache->set('context_map', $contexts);
        }
    }

    if (!empty($contexts)) {
        $pieces = explode('/', trim($_REQUEST[$modx->getOption('request_param_alias', null, 'q')], ' '), 2);
        if (count($pieces) > 0) {
            foreach($contexts as $cKey => $cSettings) {
                if ($pieces[0] == $cKey) {
                    if (isset($pieces[1])) {
                        $_REQUEST[$modx->getOption('request_param_alias', null, 'q')] = $pieces[1];
                    } else {
                        $modx->sendRedirect(MODX_SITE_URL . $pieces[0] . '/', array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
                    }
                    $modx->switchContext($cKey);
                    $modx->log(modX::LOG_LEVEL_INFO, "Switched to context {$cKey} from URI {$_REQUEST['q']}");
                    break;
                }
            }
        }
    }
}
Chavdarov
20 марта 2023, 12:36
modx.pro
1 096
0

Условие вывод в fenom

Добрый день!
Подскажите как можно на fenom создать условие на вывод контента.
На странице есть tv поле язык (английский, русский, украинский), и в зависимости от языка выводится текст, если выбрано английский — статья доступна на английском языке, если русский на русском, если украинский на украинском, а если выбрано например на русском и английском нужно подставлять статья доступна на английском и русском языках и так далее. Как составить такого рода условие. Вывод по одному языку вывел через
{switch  $_modx->resource.lang}
    {case 1}
        {var $lang = "на английском языке"}
    {case 2}
        {var $lang = "на русском языке"}
    {case 3}
        {var $lang = "на украинском языке"}
    {default}
        {var $lang = "на английском, русском и украинском языках"}
{/switch}
а чтоб при выборе двух или трех языков не получается
Майкл
19 марта 2023, 05:02
modx.pro
514
0

Как на FENOM по id ресурса вывести tv migx сразу из нескольких ресурсов?

Приветствую, подскажите пожалуйста, как вывести из нескольких ресурсов MIGX TV?

Вывожу обычно так, по id из одного ресурса, в примере из ресурса с id 1, а как добавить к этому еще id ресурсов? Например 2 и 3.

//MIGX FOREACH
{set $tvname = json_decode(1 | resource : 'migxtvname', true)}
{if $tvname}
{foreach $tvname as $item}
{$item.title}
{/foreach}
{/if}
Если указать через запятую id, будет ошибка. Как такое обычно делают? Но только не дублировать код цикла конечно.
Роман
16 марта 2023, 22:13
modx.pro
481
0