Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 132 комментария

Алексей Смирнов
Алексей Смирнов
Да, потому что я вообще не вижу что у вас что-то корректно отображается. даже текста нет…
возможно ошибки в json.
И посмотрел конфиг — да у вас нарушена структура json для MIGX.
погуглите — modx галерея на migx.
Алексей Смирнов
Алексей Смирнов
Если вы переносили — проверьте исходящую версию Mysql и ту на которую переносите.
Если переносите на более низкую, есть риски что у вас еще и индексы слетели. Поэтому при экспорте нужно поменять совместимость БД, но тут лишь гуглить. Или переносить частями БД если она большая.
Кстати табличку сессий можно очистить перед переносом.
Артур Шевченко
Артур Шевченко
попробуй такой чанк письма
{set $fields = $fields | replace: '"' : '"' | fromJSON}
{set $fieldsAliases = $fieldsAliases | replace: '"' : '"' | fromJSON}
{set $questions = $fields['questions'] | fromJSON}
{set $answers = $fields['answers'] | fromJSON}
<h3>{$_pls['savedForm.form']}</h3>

{if $questions && ($questions | count)}
    {foreach $questions as $i => $question}
        <p><strong>{$question}</strong>: {$answers[$i] | join: ', '}</p>
    {/foreach}
{else}
    {foreach $fields as $k => $v}
        {if !($k in list ['fields', 'fieldsAliases'])}
            <p><strong>{$fieldsAliases[$k] ?: $k}</strong>: {$v | join: ', '}</p>
        {/if}
    {/foreach}
{/if}
Арман
Арман
Моя форма
<form data-si-form="callback" data-si-preset="callback" class="p-4 p-md-5 border rounded-3 bg-primary bg-gradient">
          <div class="form-floating mb-3">
            <input name="phoneform" id="phoneform" type="tel" class="form-control" placeholder="+7 (XXX) XXX-XX-XX" pattern="(\+7|8)\s?[\(]?(\d{3})[\)]?\s?[\-]?(\d{3})[\-]?(\d{2})[\-]?(\d{2})" required>
            <p data-si-error="phoneform"></p>
            <label for="phoneform">Телефон</label>
          </div>
          <button class="w-100 btn btn-lg btn-light bg-gradient" type="submit">Жду звонка</button>
          <hr class="text-white my-4">
          <small class="text-white text-center">Свяжемся с вами в течении 1 минуты</small>
        </form>

То что находится в core/components/sendit/presets/sendit.inc.php
Добавил только callback остальное не трогал
<?php

return [
    'default' => [
        'validate' => 'phone:required,age:required,name:required,email:email:required,politics:checkbox:required',
        'fieldNames' => 'age==Возраст,name==Имя,phone==Телефон,email==Почта',
    ],
    'callback' => [
        'validate' => 'phoneform:required',
        'fieldNames' => 'phoneform==Телефон',
        'successMessage' => 'Форма отправлена!',
        'hooks' => 'email,FormItSaveForm',
        'emailTpl' => 'siDefaultEmail',
        'emailTo' => 'marketing@site.ru',
        'formName' => 'Форма по умолчанию',
        'emailSubject' => 'Письмо с сайта domain.ru',
    ],
    'search_something' => [
        'snippet' => '@FILE snippets/snippet.search.php'
    ],
    'check_something' => [
        'snippet' => 'checkSnippet'
    ],
    'check_code' => [
        'snippet' => 'code'
    ],
    'upload_file' => [
        'hooks' => '',
        'allowExt' => 'jpg,png,jpeg,webp,tiff,tif',
        'portion' => 0.1,
        'threadsQuantity' => 12,
    ],
    'upload_simple_file' => [
       'extends' => 'upload_file',
        'maxSize' => 1,
        'maxCount' => 2,
    ],
    'upload_drop_file' => [
        'extends' => 'upload_file',
        'maxSize' => 5,
        'maxCount' => 10,
    ],
    'form_with_file' => [
        'extends' => 'default',
        'validate' => 'name:required',
        'attachFilesToEmail' => 'files',
        'allowFiles' => 'filelist',
        'clearFieldsOnSuccess' => 1,
    ],

    'quiz' => [
        'validate' => 'phone:required,name:required,answers[*]:required,answers[7][]:checkbox:required,answers[3]:requiredIf=^answers[2]|Да^',
        'clearFieldsOnSuccess' => 0,
        'hooks' => 'FormItSaveForm,email',
        'fieldNames' => 'phone==Телефон,name==Имя',
    ],
    'register' => [
        'hooks' => 'Identification,FormItSaveForm,FormItAutoResponder',
        'method' => 'register',
        'successMessage' => 'Вы успешно зарегистрированы. Подтвердите email для активации учётной записи.',

        'fiarSubject' => 'Активация пользователя',
        'fiarFrom' => 'email@domain.ru',
        'fiarTpl' => 'siActivateEmail',

        'activation' => 1,
        'rememberme' => 1,
        'authenticateContexts' => 'web',
        'afterLoginRedirectId' => 5,
        'autoLogin' => 1,
        'redirectTo' => '',
        'passwordField' => '',
        'usernameField' => 'email',
        'usergroupsField' => '',
        'moderate' => '',
        'redirectTimeout' => 3000,
        'usergroups' => 2,
        'activationResourceId' => 1,
        'activationUrlTime' => 10800,
        'validate' => 'email:required,password:checkPassLength=^8^,password_confirm:passwordConfirm=^password^,politics:checkbox:required',
        'politics.vTextRequired' => 'Примите наши условия.',
        'password.vTextRequired' => 'Придумайте пароль.',
        'password.checkPassLength' => 'Пароль должен быть не менее 8 символов.',
    ],
    'auth' => [
        'successMessage' => 'Вы успешно авторизованы и будете перенаправлены в личный кабинет.',
        'validate' => 'email:required,password:required',
        'hooks' => 'Identification',

        'method' => 'login',

        'redirectTo' => 5,
        'redirectTimeout' => 3000,
        'usernameField' => 'email',

        'email.vTextRequired' => 'Укажите email.',
        'password.vTextRequired' => 'Введите пароль.',
        'errorFieldName' => 'errorLogin'
    ],
    'editpass' => [
        'hooks' => 'Identification',
        'method' => 'update',
        'successMessage' => 'Пароль изменён.',

        'validate' => 'password:required:minLength=^8^:regexp=^/\A[\da-zA-Z!#\?&]*$/^,password_confirm:password_confirm=^password^',

        'password.vTextRequired' => 'Придумайте пароль.',
        'password.vTextRegexp' => 'Пароль может содержать только цифры, латинские буквы и символы !,#,?,&',
        'password.vTextMinLength' => 'Пароль должен быть не менее 8 символов.',
    ],
    'dataedit' => [
        'hooks' => 'Identification',
        'method' => 'update',
        'successMessage' => 'Данные сохранены.',
        'clearFieldsOnSuccess' => 0,

        'validate' => 'email:required:email',
        'email.vTextRequired' => 'Укажите email.'
    ],
    'logout' => [
        'hooks' => 'Identification',
        'method' => 'logout',
        'successMessage' => 'До новых встреч!',
        'redirectTo' => 1,
        'errorFieldName' => 'errorLogout'
    ],
    'forgot' => [
        'hooks' => 'Identification,FormItSaveForm,FormItAutoResponder',
        'method' => 'forgot',
        'successMessage' => 'Новый пароль отправлен на ваш email',

        'usernameField' => 'email',
        'validate' => 'email:required:userNotExists',

        'fiarSubject' => 'Восстановление пароля',
        'fiarFrom' => 'email@domain.ru',
        'fiarTpl' => 'siResetPassEmail',

        'email.vTextRequired' => 'Укажите email.',
        'email.vTextUserNotExists' => 'Пользователь не найден',
    ],
    'custom' => [
        'extends' => 'onestepform',
        'snippet' => '@FILE snippets/test.php',
        'hooks' => '',
        'validate' => ''
    ],
    'sendcode' => [
        'hooks' => '',
        'snippet' => '@FILE snippets/smsauth/snippet.sendcode.php',
        'successMessage' => 'Код отправлен на номер {$phone}',
        'validate' => 'phone:required',
        'phone.vTextRequired' => 'Укажите телефон.'
    ],
    'checkcode' => [
        'hooks' => '',
        'successMessage' => '',
        'validate' => 'code:CheckCode',
        'validationErrorMessage' => 'Неверный код.',
    ],
    'sms_auth' => [
        'extends' => 'checkcode',
        'successMessage' => 'Вы успешно авторизованы.',
        'hooks' => 'SetUserFields,Identification',
        'method' => 'login',
        'redirectTo' => 5,
        'user_exist' => 1,
        'redirectTimeout' => 3000,
        'clearFieldsOnSuccess' => 1,
    ],
    'sms_register' => [
        'hooks' => 'SetUserFields,Identification',
        'method' => 'register',
        'successMessage' => 'Вы успешно зарегистрированы.',
        'activation' => 0,
        'autoLogin' => 1,
        'redirectTo' => 5,
        'redirectTimeout' => 3000,
        'usergroups' => 2,
        'validate' => 'fullname:required,phone:required,code:CheckCode',
        'fullname.vTextRequired' => 'Укажите ваше имя.',
        'clearFieldsOnSuccess' => 1,
    ],
];
Арман
Арман
Лежит в папке FormIt название сниппета так же FormIt.
Вот код который внутри:
<?php
/**
 * FormIt
 *
 * A dynamic form processing Snippet for MODx Revolution.
 *
 * @var modX $modx
 * @var array $scriptProperties
 *
 * @package formit
 */
use Sterc\FormIt;

$fi = new FormIt($modx, $scriptProperties);

$fi->initialize($modx->context->get('key'));
$fi->loadRequest();

$fields = $fi->request->prepare();

return $fi->request->handle($fields);
Илья
Илья
Артур Шевченко
Артур Шевченко
<!-- parentRowTpl-->
<li class="[[+wf.classnames]]">
    <a class="nav-link px-0 align-middle" href="#submenu1" data-bs-toggle="collapse" title="[[+wf.title]]">
        <span class="ms-1 d-none d-sm-inline">[[+wf.linktext]]</span>
    </a>
    <ul id="submenu1" class="collapse nav flex-column ms-1" data-bs-parent="#menu">
        [[+wf.wrapper]]
    </ul>  
</li><!-- /parentRowTpl -->
<!-- innerTpl -->
    [[+wf.wrapper]]
<!-- /innerTpl -->
Ну и лучше использовать pdoTools, говорят они быстрее.
Арман
Арман
[08-Apr-2024 04:14:56 Europe/Moscow] PHP Fatal error:  Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given in /var/www/u1387551/data/www/site.ru/core/components/pdotools/vendor/fenom/fenom/src/Fenom/Template.php(487) : eval()'d code:20
Stack trace:
#0 /var/www/u1532978/data/www/site.ru/core/components/pdotools/vendor/fenom/fenom/src/Fenom/Render.php(215): Fenom\Template->{closure}(Array, Object(Fenom\Template))
#1 /var/www/u1532978/data/www/site.ru/core/components/pdotools/vendor/fenom/fenom/src/Fenom/Render.php(215): Closure->__invoke(Array, Object(Fenom\Template))
#2 /var/www/u1532978/data/www/site.ru/core/components/pdotools/vendor/fenom/fenom/src/Fenom/Template.php(492): Fenom\Render->display(Array)
#3 /var/www/u1532978/data/www/site.ru/core/components/pdotools/vendor/fenom/fenom/src/Fenom/Render.php(229): Fenom\Template->display(Array)
#4 /var/www/u1532978/data/www/site.ru/core/components/pdotools/src/Parsing/Fenom/Fenom.php(136): Fenom\Render->fetch(Array)
#5 /var/www/u1532978/data/www/site.ru/core/components/pdotools/src/CoreTools.php(418): ModxPro\PdoTools\Parsing\Fenom\Fenom->process(Array, Array)
#6 /var/www/u1532978/data/www/site.ru/core/components/formit/src/FormIt.php(341): ModxPro\PdoTools\CoreTools->getChunk('siDefaultEmail', Array)
#7 /var/www/u1532978/data/www/site.ru/core/components/formit/src/FormIt/Hook/Email.php(193): Sterc\FormIt->getChunk('siDefaultEmail', Array)
#8 /var/www/u1532978/data/www/site.ru/core/components/formit/src/FormIt/Hook.php(141): Sterc\FormIt\Hook\Email->process(Array)
#9 /var/www/u1532978/data/www/site.ru/core/components/formit/src/FormIt/Hook.php(107): Sterc\FormIt\Hook->load('email', Array, Array)
#10 /var/www/u1532978/data/www/site.ru/core/components/formit/src/FormIt/Request.php(402): Sterc\FormIt\Hook->loadMultiple(Array, Array)
#11 /var/www/u1532978/data/www/site.ru/core/components/formit/src/FormIt/Request.php(345): Sterc\FormIt\Request->runPostHooks()
#12 /var/www/u1532978/data/www/site.ru/core/components/formit/src/FormIt/Request.php(254): Sterc\FormIt\Request->postProcess()
#13 /var/www/u1532978/data/www/site.ru/core/cache/includes/elements/modx/revolution/modsnippet/11.include.cache.php(21): Sterc\FormIt\Request->handle(Array)
#14 /var/www/u1532978/data/www/site.ru/core/src/Revolution/modScript.php(88): include('/var/www/u13875...')
#15 /var/www/u1532978/data/www/site.ru/core/components/pdotools/src/CoreTools.php(358): MODX\Revolution\modScript->process(NULL)
#16 /var/www/u1532978/data/www/site.ru/core/components/sendit/model/sendit/sendit.class.php(391): ModxPro\PdoTools\CoreTools->runSnippet('FormIt', Array)
#17 /var/www/u1532978/data/www/site.ru/core/components/sendit/model/sendit/sendit.class.php(372): SendIt->runSnippet('FormIt')
#18 /var/www/u1532978/data/www/site.ru/assets/components/sendit/action.php(45): SendIt->process()
#19 {main}
  thrown in /var/www/u1532978/data/www/site.ru/core/components/pdotools/vendor/fenom/fenom/src/Fenom/Template.php(487) : eval()'d code on line 20