Не удается отобразить ошибки проверки при отправке формы в AMP - PullRequest
0 голосов
/ 03 июня 2019

Я выполняю проверку ввода данных с помощью amp-form и хочу отобразить ошибки на внешнем интерфейсе.Тем не менее, когда я отправляю форму, даже если она содержит ошибки (имя не введено), интерфейс сообщает: «Успех!»вместо вывода ошибок.

PHP код: https://gist.github.com/Stefany93/364db9e088b570fff83387494e8459a4#file-php

   action-xhr="scripts/contact_process.php" 
   verify-xhr="/scripts/contact_process.php"
   method="post" 
   target="_blank" 
   class="detailed_contact_form "
   custom-validation-reporting="as-you-go"
   >
      <fieldset class="user-valid valid">
         <legend>
            <span> Schedule an appointment</span>
         </legend>
         <div class="form-body">
            <div class="form-group">   
             <div class="form-group"> 
                  <div class="form-group"> 
               <label for="email">Email  </label> 
               <input type="text" required name="email" id="email"  value="exampleexample.com"class="form-input string-entry">
            </div>
               <label for="name">Name  </label> 
               <input type="text" required  name="name" id="name" value="Cindy"  class="form-input string-entry">
            </div>
            <div class="form-group">  
               <label for="phone">Phone </label>  
               <input type="tel" required name="phone" id="phone" value="123-345-6789" class="form-input string-entry">
            </div>
               <div class="form-group">  
               <label for="phone">Message </label>  
               <textarea name="message" required class="textarea" >I want to schedule an appointment for my dragon Skippy, for tomorrow 10AM</textarea>
            </div>
            <div class="form-group button-holder">
               <input type="submit" class="button" value="Send appointment!">
            </div>
         </div>
            <div verify-error>
        <template type="amp-mustache">
            {{#verifyErrors}}
                <p>{{message}}</p>
            {{/verifyErrors}}
            {{^verifyErrors}}
                <p>Something went wrong. Try again later?</p>
            {{/verifyErrors}}
        </template>
    </div>
    <div submit-error>
        <template type="amp-mustache">
            {{#verifyErrors}}
                <p>{{message}}</p>
            {{/verifyErrors}}
            {{^verifyErrors}}
                <p>Something went wrong. Try again later?</p>
            {{/verifyErrors}}
        </template>
    </div>

    <div submit-success>
    <template type="amp-mustache">
      Success! 
    </template>
  </div>

      </fieldset>

   </form> ```

1 Ответ

0 голосов
/ 08 июня 2019

Я получал сообщение об успехе, потому что AMP отслеживает заголовки HTTP и всякий раз, когда я отправляю форму, если отправка прошла успешно (даже если я не смог отправить письмо из-за ошибок), contact_process.php возвращал заголовок HTTP 2xxкоторый тогда AMP сочтет успешным.

submit-success будет выводиться при успешной отправке формы, независимо от того, выполнила ли она то, что вы хотели.

submit-error будет выводиться всякий раз, когда серверная часть возвращает HTTP-заголовок 4xxx.В моем случае я должен был добавить эту строку кода:

header("HTTP/1.1 400 Bad Request");

Ниже echo json_encode($error_array), и это сработало!

Всякий раз, когда вы хотите вывести ошибки, обязательно вручную отправьте HTTP-заголовок ошибки 4xx.

...