idmkr / form-validation
使用 respect/validation 的 PHP 表单验证器
dev-master
2016-02-09 18:57 UTC
Requires
- php: >=5.3.0
- egulias/email-validator: ^1.2
- phpmailer/phpmailer: ^5.2
- respect/validation: ^1.0
This package is auto-updated.
Last update: 2024-09-11 20:04:46 UTC
README
##PHP 表单验证,基于类,直观。本包提供了对出色的 respect/validation 包的一个非常简单的封装。它只是一个可扩展的类,满足你的所有需求
##特性
- 可以在微框架(如 Slim 或 Silex)或无框架环境中直接使用
- 使用简单的类方法定义你的表单数据和验证
- 为异常消息提供 Gettext 翻译
##安装 使用 Composer 安装此包。
composer require idmkr/form-validation
扩展此类并开始使用 respect/validation 验证器作为直观的类方法。
##完整示例 处理经典的 Web 表单相当直接。首先将 ValidatableForm 扩展为新的表单类。然后,你可以使用 Respect\Validation\Validator ( v:: ) 并通过 setValidation 方法或通过驼峰式命名每个表单数据名称来定义你的表单字段。未通过这些方法定义的表单数据将被简单地忽略。
use Respect\Validation\Validator as v; use Idmkr\FormValidation\ValidatableForm; class ContactForm extends ValidatableForm { // This generic method can wrap all of your form data public function setValidation() { return [ 'name' => v::alpha("'\"&,")->length(1,100), 'telephone' => v::phone(), 'email' => v::email(), 'subject' => v::length(3,300) ]; } // This dynamic method will override any validation associated with setValidation() public function validateMessage() { return v::length(30,1500); } }
在你的 POST 路由/控制器函数中,你会这样做
$form = new ContactForm('fr_FR'); $success = $form->validate($_POST); if(!$success) echo json_encode($form->errors());
你还需要清理用户输入。主要是为了在验证失败后显示数据
<form>
<input type="text" name="name" value="<?=$form->sanitized('name')?>">
</form>