我想知道处理表单处理的最佳实践是什么?
就我而言,我做了类似的事情:
- if the user hasn't submited the form
- else
- if there are form errors
- else
我的问题是我重复了表单的 HTML 代码 3 次,我认为这不是一个好的做法(文件长,难以阅读)。
您应该遵循发布/重定向/获取 http://en.wikipedia.org/wiki/Post/Redirect/Get模式以防止表单提交重复。
您可以通过以下方式将该模式与错误处理和成功消息显示集成:
if POST_REQUEST:
ERRORS = VALIDATE_FORM()
if ERRORS IS EMPTY:
PROCESS_REQUEST
REDIRECT TO <Successful URL>
DISPLAY_FORM(ERRORS)
以下是可能的情况:
- 在表单 url 处获取请求:
POST_REQUEST 为 false,因此您只需显示没有错误的表单(因此是正常的空表单)
- 表单提交有错误:
POST_REQUEST 为 true,您验证表单。在这种情况下,一些错误将在 ERRORS 变量(可能是一个数组)中返回。错误变量是not空,因此您只需显示带有错误消息的表单
- 正确的表单提交:
POST_REQUEST 为 true 并且您验证表单。由于这次表单有效,因此 ERRORS 变量将为空,并且您执行到 的重定向,这将向用户显示成功消息。
使用此模式可以防止用户在正确提交表单后刷新页面时再次发送表单数据。
Django 框架建议以这种方式处理表单。
处理表单显示错误的一个好方法是让 VALIDATE_FORM() 函数返回一个联想性的错误数组,其中每个键是字段的名称,相应的项目是错误消息数组。
一般表单错误(与指定字段无关)应该有一个空键。
例如,您可以通过这种方式在 DISPLAY_FORM() 函数中显示错误:
<ul class="errors"><?php foreach(ERRORS['field_name'] as $error) { echo "<li>$error</li>"; } ?></ul>
<input name="field_name" type="text" ... />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)