We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 54800
    • 2 Posts
    Разбираюсь в 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 числом - всё нормально, при вводе числа меньше, чем указано в валидаторе, получаю сообщение о неподходящем значении; используемый плейсхолдер ниже, в самой форме, нормально преобразуется в число. Что я делаю не так?
      • 44064
      • 185 Posts
      &validate=`my_field:required:isNumber:minValue=`[[!+my_min_value]]``
      Синтаксически здесь ошибка, правильнее скорее так:
      &validate=`my_field:required:isNumber:minValue=^[[!+my_min_value]]^`


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

        Email: [email protected]
        Web: antontarasov.com
        • 54800
        • 2 Posts
        Спасибо, так тоже пробовал, к сожалению, то же самое. Более того, попробовал ещё 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.