Всего 123 609 комментариев

Артур Шевченко
06 сентября 2023, 21:07
0
В доке есть примеры работы с событиями.
Андрей Шевяков
06 сентября 2023, 20:58
0
Да, вот мне именно это и надо:
если ты хочешь вывести текст и successMessage или validationErrorMessage, то пиши свой JS который обнулит сообщение в ответе сервера и выведет его где тебе нужно.
А может есть пример какой нибудь?
Артур Шевченко
06 сентября 2023, 20:56
+1
Если ты хочешь выводить текст ошибки в поле, то добавь тэгу в котором нужно вывести текст атрибут data-si-error с именем нужно поля, если ты хочешь вывести текст и successMessage или validationErrorMessage, то пиши свой JS который обнулит сообщение в ответе сервера и выведет его где тебе нужно.
Maks
06 сентября 2023, 20:54
0
position: «topCenter»
вот это надо поменять
Maks
06 сентября 2023, 20:53
0
Там настройки для этого есть насколько я понял.

export default function returnConfigs() {
  return {
    Notify: {
      pathToScripts: './modules/notify.js',
      jsPath: 'assets/components/sendit/web/js/lib/izitoast/iziToast.min.js',
      cssPath: 'assets/components/sendit/web/css/lib/izitoast/iziToast.min.css',
      handlerClassName: 'iziToast',
      toastSelector: '.iziToast',
      typeSelectors: {
        success: '.iziToast-color-green',
        info: '.iziToast-color-blue',
        error: '.iziToast-color-red',
        warning: '.iziToast-color-yellow',
      },
      titleSelector: '.iziToast-title',
      handlerOptions: {
        timeout: 2500,
        position: "topCenter"
      }
    },
  }
}
Андрей Шевяков
06 сентября 2023, 20:51
0
И еще такой вопрос. То что выводится в виде Notify iziToast можно ли выводить просто в коде в div, например перед формой?
Андрей Шевяков
06 сентября 2023, 20:44
0
Спасибо, сделал его из userNotExists.
Назвал userExists

Код:
<?php
if($modx->getCount('modUser', array('username' => $value))){
    $msg = $scriptProperties[$key.'.vTextUserExists'] ?: 'Такой пользователь уже зарегистрирован.';
    $validator->addError($key, $msg);
}
return true;

Все работает!
Артур Шевченко
06 сентября 2023, 20:35
0
А сайт на локалке или на хостинге?
Артур Шевченко
06 сентября 2023, 20:34
+1
Написать валидатор, который проверит есть ли такая почта или нет.
Maks
06 сентября 2023, 20:34
0
Сообщения показывает об ошибке только если указан default
'validate' => 'phone:required,name:required,email:email:required,politics:checkbox:required',

Если же сам задаешь поля для валидации то сообщения нет.
Maks
06 сентября 2023, 20:32
0
в консоли
Object { "X-SIFORM": "oneStepFormru", "X-SIACTION": "send", "X-SIPRESET": "onestepformru", "X-SITOKEN": "75fc54dbfa9bae07784886b6ce8038ae" }
sending.js:91:17
Андрей Шевяков
06 сентября 2023, 20:31
0
Добрый день!
Такой вопрос возник.
В личном кабинете есть форма изменения данных пользователя.

<form action="#" data-si-form="dataForm" data-si-preset="dataedit">
                                    <p class="personal-subheading">Основные данные</p>
                                    <p class="personal-heading-dop">Обязательно укажите дату рождения, мы сделаем вам приятный подарок.</p>
                                    <div class="input-blocks">   
                                    	<div class="input-block">
                                    		<input type="text" name="fullname" value="{$_modx->user.fullname}">
                                    		<span class="placeholder">ФИО</span>
                        		            <span class="input-block__error" data-si-error="fullname"></span>
                                    	</div>
                                    	<div class="input-block">					
                                    		<input type="tel" name="mobilephone" value="{$_modx->user.mobilephone}">	
                                    		<span class="placeholder"></span>
                        		            <span class="input-block__error" data-si-error="mobilephone"></span>
                                    	</div>
                                    </div>
                                    <div class="input-blocks">
                                    	<div class="input-block">
                                    		<input type="email" name="email" value="{$_modx->user.email}">	
                                    		<span class="placeholder">Email</span>
                        		            <span class="input-block__error" data-si-error="email"></span>
                                    	</div>
                                        
                                    	<div class="input-block">					
                                    		<input type="date" name="dob" value="{$_modx->user.dob}">	
                                    		<span class="placeholder">Дата рождения</span>
                        		            <span class="input-block__error" data-si-error="dob"></span>
                                    	</div>
                                    </div>
                                    <div class="input-blocks input-block-w100">
                                    	<div class="input-block">
                                    		<button type="submit" class="btn btn-grey">Сохранить изменения</button>	
                                    	</div>
                                    </div>
                                </form>

Для нее используются такие настройки:
'dataedit' => [
        'hooks' => 'AjaxIdentification',
        'method' => 'update',
        'successMessage' => 'Данные успешно сохранены.',
        
        'clearFieldsOnSuccess' => 0,

        'validate' => 'fullname:required,mobilephone:required,email:email:required',
        'email.vTextRequired' => 'Укажите email.'
    ],

При таких настройках, можно в форме указать почту другого пользователя, который тоже есть в бд, и все сохранится. Как сделать, чтобы выдавал ошибку, что такой пользователь уже зарегистрирован и эту почту использовать нельзя?
Артур Шевченко
06 сентября 2023, 20:10
0
Про хук ничего не знаю, поэтому не могу сказать почему он не работает. А по поводу отсутствия уведомлений, надо смотреть консоль.
Артур Шевченко
06 сентября 2023, 20:07
0
МОжно в системный настройках удалить путь к css
Алексей Смирнов
06 сентября 2023, 20:07
0
А так у вас она не корневая, а с вложенностью… Этот скрин должен был быть в начале.
И тогда это все меняет дело.
нужно брать в зубы лом:
getChildIds
Получать родителей в массив и сравнивать.
те что-то такое
{set $allpara = $_modx->getChildIds(31,2,['template' => 3])}
... $allpara ... // возможно еще нужно сделать манипуляции какие-то.
//можно предварительно распечатать массив и убедиться тчо там все ровно:
<strong>{$allpara | print}</strong>
{if $_modx->resource.parent not in list $allpara}
  <div class="reward"><span>Артикул:</span> <span class="item">[[+article]]</span></div>
{/if}
Я образно показал какую функцию можно взять и что можно параметры засунуть.
вы, думаю, сможете указать верные. Шаблон подставьте какой у этих ресурсов, ну и глубину выборки по вкусу
31 — Id родителя
2 — глубина
template — шаблон.
Maks
06 сентября 2023, 19:06
0
Так и не запустил формы

Пресет
'onestepform' => [
'extends' => 'default',
'hooks' => 'FormItSaveForm,email,sendMessageTelegram',
'redirectTo' => 0,
'redirectTimeout' => 3000,
'clearFieldsOnSuccess' => 1,
'fieldNames' => 'name==Имя',
'successMessage' => 'Ваш запрос успешно отправлен! На протяжинии 30 минут вам перевзонит наш менеджер!',
],

Если в настройках default
'default' => [
'validate' => 'phone:required,name:required,email:email:required,politics:checkbox:required',
],

оставить все поля а мне надо только 2 поля проверять то форма не отправляется пишет Это поле обязательно.
Если же в настройках default
'default' => [
'validate' => 'phone:required,name:required',
],
оставить только нужные мне поля то сообщения об ошибке нет вообще.

Еще одно hooks sendMessageTelegram если раньше он на любом сниппете работал на fetchit на ajaxformlogin отправлял уведомления без проблем то сейчас не работает.