Как я могу заставить ninja_forms_submit_data и саму форму возвращать ответ об ошибке?

Я использую следующее руководство:

http://developer.ninjaforms.com/codex/custom-server-side-validation/

Мой код (версия Ninja Forms 3.3.7):

add_filter( 'ninja_forms_submit_data', 'my_ninja_forms_submit_data' );

function my_ninja_forms_submit_data( $form_data ) {

    $errors = [
      'form' => [
        'my-error' => __( 'An unexpected error occurred.', 'my-plugin' ),
      ]
    ];

    $response = [
        'errors' => $errors,
    ];

    echo wp_json_encode( $response );
    wp_die(); // this is required to terminate immediately and return a proper response
}

Я вижу, что JSON проходит нормально, но на внешнем интерфейсе кнопка «отправить» формы ниндзя будет продолжать показывать «Обработка». Есть ли что-то, что мне не хватает?


person farinspace    schedule 28.06.2018    source источник


Ответы (1)


Код, представленный на веб-сайте форм Ninja, у меня тоже не работал.

Я узнал, что вы должны вернуть ответ и без кодировки JSON. Также мне не удалось отобразить «ошибку формы», просто «ошибку поля». Не идеально, но работает:

add_filter( 'ninja_forms_submit_data', 'my_ninja_forms_submit_data' );

function my_ninja_forms_submit_data( $form_data ) {

  $errors = [
    'fields' => [
      '5' => __( 'An unexpected error occurred.', 'my-plugin' ),
    ]
  ]; // '5' is field's id.

  $response = [
    'errors' => $errors,
  ];

  return $response;
}
person Viesturs Knopkens    schedule 12.01.2019