On March 26, 2019 we launched new MODX Forums. Please join us at the new MODX Community Forums.
Subscribe: RSS
  • Разбираюсь в FormIt. MODX Revolution v. 2.7.0, FormIt v. 4.1.1. Хочу задать правила валидации для поля формы: "обязательное, число, минимальное значение", минимальное значение хочу задать плейсхолдером. Задаю вот так вот:
    [[!FormIt?  
      &hooks=`openSession`
      &redirectTo=`1`
      &placeholderPrefix=``
      &validate=`my_field:required:isNumber:minValue=`[[!+my_min_value]]``
    ]]
    

    но не работает (могу ввести любое число). Если задаю minValue числом - всё нормально, при вводе числа меньше, чем указано в валидаторе, получаю сообщение о неподходящем значении; используемый плейсхолдер ниже, в самой форме, нормально преобразуется в число. Что я делаю не так?
    • Anton Tarasov Reply #2, 4 months ago
      &validate=`my_field:required:isNumber:minValue=`[[!+my_min_value]]``
      Синтаксически здесь ошибка, правильнее скорее так:
      &validate=`my_field:required:isNumber:minValue=^[[!+my_min_value]]^`


      Но не уверен, что парсер в случае с валидатором Formit может это понять. Попробуйте предложенный синтаксис и дайте знать))
        Anton Tarasov
        MODX Developer

        Email: contact@antontarasov.com
        Web: antontarasov.com
      • Спасибо, так тоже пробовал, к сожалению, то же самое. Более того, попробовал ещё custom validators, всё равно не получается.
        Вот так - всё здорово.
        <?php
        $success = $value > 10000;
        if (!$success) {
          $validator->addError($key,'Not big enough!');
        }
        return $success;

        А так - опять же, я могу ввести любое число.
        <?php
        $success = $value > $modx->getPlaceholder('my_min_value');
        if (!$success) {
          $validator->addError($key,'Not big enough!');
        }
        return $success;

        Сниппет с
        return $modx->getPlaceholder('my_min_value')
        , вызываемый после сниппета FormIt, возвращает значение 10000.