Проверка MODX FormIt проверяет только `required`

На моем сайте есть контактная форма. Я использую formit для проверки FormIT. Я хочу, чтобы электронная почта содержала не более 40 символов, была обязательной и была правильным адресом электронной почты. Поле Message также является обязательным, и для него задана максимальная длина.

Валидатор работает некорректно:

  • Когда обязательные поля пусты, отображается сообщение об ошибке и не разрешается отправить форму (это абсолютно правильная ситуация)
  • Когда в email находится любой текст (действительный или нет), форма отправляется, но перенаправление на страницу успеха не работает (это также происходит, когда мы вводим длину, превышающую максимальную)

        [[!FormIt?
        &hooks=`spam,email,redirect,FormItAutoResponder`
        &emailTpl=`emailTplContact`
        &emailSubject=`Message from site.com`
        &emailTo=`[email protected]`
        &validate=`email:email:required:maxLength=^40^,
                   message:required:maxLength=^150^`
        &redirectTo=`11`
        &fiarTpl=`emailAutoRespond`
        &fiarSubject=`Your message is sent`
        &fiarFromName=`My Site`
        &fiarFrom=`[email protected]`
        &fiarToField=`email`
        &fiarReplyTo=`email`
        ]]
    
        <form id="contact-form" method="post" action="[[~[[*id]]]]" enctype="application/x-www-form-urlencoded" role="form" data-toggle="validator" name="order">
          <input type="text" id="name" name="name" type="name" placeholder="Name" value="[[!+fx.name]]" size=25>
          <input type="text" required="required" type="email" id="email" name="email" placeholder="Email" value="[[!+fx.email]]">
          [[!+fx.error.email]]
          <textarea required="required" placeholder="Message" id="message" name="message">[[!+fx.message]]</textarea>
          <button name="send">Send</button>
        </form>
      </div>
    

person Maryja Piaredryj    schedule 18.08.2015    source источник
comment
похоже, что у вас все настроено правильно. Я бы попытался сократить его, чтобы увидеть, действительно ли он проверяет длину поля электронной почты: [[! FormIt? & validate = email:maxLength=^40^ Я знаю, что вы должны иметь возможность связать несколько валидаторов вместе, но у него могут быть проблемы с адресом электронной почты: email: required: maxLength   -  person Sean Kimball    schedule 18.08.2015


Ответы (1)


У вас есть атрибут type дважды во вводе имени и ввода электронной почты, так что это может быть проблемой.

<input type="text" id="name" name="name" type="name">
<input type="text" required="required" type="email">

Удалите type = "name" и type = "email" - (leave type = "text")

Также - я когда-либо использовал только префикс fi для заполнителей Formit; вы точно знаете, что fx будет работать? Вы установили это где-то еще? Вы говорите, что видите сообщение об ошибке, поэтому я предполагаю, что заполнитель ошибки должен работать ...

Не забудьте добавить placeholderPrefix к вашему вызову FormIt:

[[!FormIt?
    &placeholderPrefix=`fx`
    &hooks=`spam,email,redirect,FormItAutoResponder`
    &emailTpl=`emailTplContact`
    &emailSubject=`Message from site.com`
    &emailTo=`[email protected]`
    &validate=`email:email:required:maxLength=^40^,
           message:required:maxLength=^150^`
    &redirectTo=`11`
    &fiarTpl=`emailAutoRespond`
    &fiarSubject=`Your message is sent`
    &fiarFromName=`My Site`
    &fiarFrom=`[email protected]`
    &fiarToField=`email`
    &fiarReplyTo=`email`
]]
person LIannotti    schedule 19.08.2015
comment
Префикс fx будет работать, пока он установлен в вызове FormIt, чего, похоже, нет в приведенном выше коде. &placeholderPrefix позволяет указать собственный префикс. - person Mazuhl; 19.08.2015