Сохранение данных формы, когда отправка POST не подтверждена - PullRequest
2 голосов
/ 26 августа 2010

Мне нужно проверить форму в php и отобразить некоторые сообщения об ошибках в представлении, если есть ошибки проверки.Проблема в том, что после отправки формы отправка пользователя обратно на страницу очистит все заполненные поля формы.Есть ли простой способ не потерять непроверенные данные формы?

Единственное решение, которое я могу предложить, - это обратная инженерия переменной $_POST, но я бы хотел более элегантный способ сделать это.

Ответы [ 3 ]

2 голосов
/ 26 августа 2010

Проверка на стороне клиента.
Если вам необходимо выполнить проверку на стороне сервера, сделайте ajax-вызов (чтобы вам не пришлось обновлять страницу) на сервер с элементами, которые вы хотите проверить. Сделайте необходимые проверки и верните ответ на страницу (действителен или нет).
Если ответ верен, вы можете продолжить (Примечание: вам может не потребоваться возвращаться на страницу после проверки, если все элементы, которые вам необходимо выполнить, также являются проверенными).
Если он недействителен, ответ должен возвращать недопустимые элементы (и, возможно, сообщение об ошибке для каждого), чтобы вы могли отображать нужные сообщения об ошибках.

2 голосов
/ 26 августа 2010

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

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

1 голос
/ 26 августа 2010

Если в коде php, который вы используете для подготовки формы, вы всегда устанавливаете значения полей на то, что существует в массиве $ _POST, то в коде проверки вы можете просто условно включить этот файл формы, и он будет отображаться с пользовательскими значениями. При первом отображении формы (пустая форма) $ _POST не будет содержать элементов с именами полей, и форма будет пустой.

...