Ali*_*xel 8 php forms validation
我一直是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');
}
}
}
?>
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,这应该是一个简单的联系表单,但它需要我的生命来验证它,我一直在研究一些设计模式(观察者,工厂),但我不知道是否以及以何种方式我应该实施它们.
您可以为所有表单创建一个抽象基类,为字段类型创建一个类,以及一个仅用于验证各种类型的值的静态类(validateString、validateHtml、validateEmail、validateNumber、date 等,只是方法......)。定义表单时,您将定义它将使用哪些字段对象,因此 Form->validate() 方法将调用 Field->validate() 并返回过滤后的值或错误消息。指定字段的默认错误消息,但在表单类中定义字段时提供覆盖它的选项。
哦,留下那个 $_POST 的东西。阅读该帖子一次,将其传递给表单验证一次,然后处理过滤的字段值。
另一件事是,根据您的需求和应用程序的架构,有多种方法可以实现表单验证,当您采用多种方法进行应用程序设计时,可能很难制作通用的表单验证器。选择一种工作方式并坚持下去(无论它是一个现成的框架还是您自己的代码),或者您编写的任何超级表单验证,它在后面的项目中都没有任何意义。
还有一件事:像姜戈一样?好的!因此,开始在 Django 中进行 Python 编程,您将真正改变完成工作的思维方式。