我一直是
PHP开发人员已经有一段时间了,但直到今天我还没有找到一种简单的处理方法(也就是规范化,清理,验证,填充和显示表单以及各自的字段错误).
我知道现在大多数PHP框架都使这项工作变得更容易,但不知何故我不想将我的所有代码移植到其中一个框架中,我不太明白如何在Django中实现表单验证(I知道,这是Python,但我真的很喜欢他们的方法),所以我觉得最好的方法是在这里发布我处理一个简单形式的方式,也许你们可以指出我最好的方向.
<?PHP // sample controller class _sample extends framework { // sample action function contact() { if ($this->Is->Post() === true) { $errors = array(); if ($this->Is->Set($_POST['name']) === false) { $errors['name'] = 'Please fill in your name.'; } if (($this->Is->Email($_POST['email']) === false) || ($this->Is->Set($_POST['email']) === false)) { $errors['email'] = 'Please fill in your email address.'; } if (($this->Is->Phone($_POST['contact']) === false) && ($this->Is->Mobile($_POST['contact']) === false)) { $errors['contact'] = 'Please fill in your phone (or cell phone) number.'; } if ($this->Is->Set($_POST['message']) === false) { $errors['message'] = 'Please type a message'; } // no errors,it's valid! if (empty($errors) === true) { // do stuff and redirect to "success" / "thank you" page } // load the form view,and let it display the errors // automatically prefill fields with $_POST values else { $this->View('contact_form',$errors); } } // load the form view for the first time else { $this->View('contact_form'); } } } ?>
正如你所看到的,这应该是一个简单的联系表格,但它需要我的生命来验证它,我一直在研究一些设计模式(观察者,工厂),但我不相信是否以及以何种方式我应该实施它们.
您可以为所有表单创建一个抽象基类,为fieldtypes创建一个类,以及一个静态类,用于验证各种类型的值(validateString,validateHtml,validateEmail,validateNumber,date等,只是方法..).定义表单,您将定义它将使用哪些字段对象,因此Form-> validate()方法将调用Field-> validate()并返回过滤的值或错误消息.指定字段的默认错误消息,但在表单类中定义字段时,可以选择覆盖它.
哦,留下$_POST的东西.阅读帖子一次,将其传递一次到表单验证,然后处理过滤的字段值.
另一件事是根据您的需求和应用程序的体系结构,有多种方法可以实现表单验证,当您有各种应用程序设计方法时,很难制作一个通用的表单验证器.选择一种完成工作的方式并坚持下去(无论它是准备好的框架还是你自己的代码),或者你编写的任何超级形式验证,在后面的项目中都没有意义.
还有一个:像Django?好!因此,开始在Django中编写Python,您将真正改变思考如何完成工作的方式.