Всего 123 791 комментарий

Maks
06 сентября 2023, 21:13
0
Очень жаль что так и не получилось завести. Реально снижает нагрузку на сайт.
Артур Шевченко
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 — шаблон.