Как популярные PHP-фреймворки обрабатывают ошибки ввода формы? - PullRequest
3 голосов
/ 10 января 2010

Я знаю, например, что Zend Framework имеет некоторые возможности для создания элементов формы с валидаторами. Но теперь, допустим, пользователь вводит полные данные мусора, что недопустимо. Что будет дальше? Допустим, часть JS работает неправильно или JS отключен, и сервер получает данные об мусоре.

Как "большие" PHP-фреймворки справляются с этим концептуально? Пожалуйста, укажите структуру и опишите ее, если знаете. Это очень помогло бы.

Как сообщения об ошибках возвращаются в форму и как они отображаются? Как это сделано технически?

С моей точки зрения, теоретически все должно идти так:

  1. Пользователь вводит мусор
  2. Пользователь отправляет форму (проверка JS не проходит, JS деактивируется и т. Д.)
  3. PHP-скрипт получает ввод мусора
  4. PHP-скрипт проверяет ввод мусора на стороне сервера. Все поля = FALSE, GARBAGE.
  5. Каждый раз при сбое проверки поля PHP-скрипт записывает сообщение об ошибке ввода в массив.
  6. Массив сообщений об ошибках - это карта (ассоциативный массив), где ключом является имя элемента формы
  7. Скрипт снова загружает форму из-за ошибок ввода
  8. Сценарий формы имеет всю логику для отображения ошибок ввода поля из массива сообщений об ошибках
  9. Пользователь видит красивые сообщения об ошибках и повторно вводит мусор.
  10. Снова и снова.
  11. Пока все в порядке> скрипт сохраняет данные и отображает большое СПАСИБО сообщение.

Я не знаю другого, но если есть, мне нужно знать; -)

Что-то подсказывает мне, что это не лучшее решение.

1 Ответ

2 голосов
/ 10 января 2010

Во-первых, если вы не используете формы с поддержкой Dojo, Zend Framework не имеет ничего общего с javascript. Проверка JS будет либо написана вами самостоятельно, либо привязана к вашей форме с поддержкой Dojo.

Валидация состоит из итерации каждого ZFE и проверки его Валидатора. Если возникает ошибка, она сохраняется в ZFE как сообщение об ошибке. При повторном отображении формы, если вы используете декораторы по умолчанию, у вас будет загружен Zend_Form_Decorator_Errors, который «украшает» элемент сообщением об ошибке.

Я бы предложил прочитать исходный код Zend_Form, начиная с метода isValid (). Очень просто читать и видеть, что происходит.

...