Custom validators FormIt

Нашел в документации FotmIt такой снипет
$value = (float)$value;
$success = $value > 1000;
if (!$success) {
    // Note how we can add an error to the field here.
    $validator->addError($key,'Not big enough!');
}
return $success;
Не особо понял где указывать свое поле и как должен выглядеть сама форма и валидатор.
Если не сложно пришлите пожалуйста небольшой пример. Заранее благодарю
vit
vit
16 октября 2022, 11:18
modx.pro
1 304
0

Комментарии: 8

Баха Волков
16 октября 2022, 12:53
0
Помогите пользователям понять вас.

Нашел в документации такой снипет
В какой документации? Документация чего?
    vit
    vit
    16 октября 2022, 13:20
    0
    Извините забыл уточнить. FormIt
    Артур Шевченко
    16 октября 2022, 13:26
    0
    А что там непонятного?
    $value — это значение, которое нужно проверить
    $key — имя поля формы, в котором это значение указывается.
    Если проверка не пройдена нужно выполнить метод
    $validator->addError($key,'Not big enough!')
    где $key всё тот же ключ, а 'Not big enough!' сообщение для пользователя об сути ошибки.
    Если проверка пройдена, то нужно просто вернуть true.
    А небольшой пример вы сами уже написали в вопросе.
      vit
      vit
      16 октября 2022, 13:37
      0
      не особо получается подскажите как тут взять проверку TITLE и правильно ли я указываю
      &validate=`cost:isBigEnough`
      &customValidators=`isBigEnough`
      ?
      [[!FormIt?  
        &redirectTo=`27`
        &placeholderPrefix=``
      &validate=`cost:isBigEnough`
      &customValidators=`isBigEnough`
      ]]
      
        <form class="bs-example form-horizontal" action="[[~[[*id]]]]" method="post">
                <input type="text" value="[[!+title]]" class="form-control"
                id="title"  name="title">
                <input type="text" value="[[!+telegram]]" class="form-control"
                id="telegram"  name="telegram">
                <button type="submit" class="btn btn-primary">Сохранить</button>
        </form>
        Артур Шевченко
        16 октября 2022, 22:31
        0
        Если нужно убедиться в том, что $cost больше 1000, то данная запись верна.
        &validate=`cost:isBigEnough`
        &customValidators=`isBigEnough`
      vit
      vit
      16 октября 2022, 16:27
      0
      А если надо сделать проверку двух полей как изменить?
      $value = (float)$value;
      $success = $value > 1000;
      if (!$success) {
          // Note how we can add an error to the field here.
          $validator->addError($key,'Not big enough!');
      }
      return $success;
      Или на каждое поле снипет писать?
        Артур Шевченко
        16 октября 2022, 22:34
        0
        Никак не надо менять валидатор, впрочем как и писать одинаковые валидаторы на каждое поле. Валидатор получает те поля, для которых он назначен в параметрах вызова сниппета. Если нужно кроме cost, проверить ещё и title, надо написать в вызове сниппета так
        &validate=`cost:isBigEnough,title:isBigEnough`
        &customValidators=`isBigEnough`
        vit
        vit
        23 октября 2022, 23:59
        0
        подскажите пожалуйста еще
        как получить поле из FormIt в файл customValidators
        чтобы было типо того, hook тут не работает
        $key = $hook->getValue('key');
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          8