anandpilania / f3-validator
FatFreeFramework 的验证器包。
v1.2.5
2019-08-12 17:09 UTC
Requires
- bcosca/fatfree-core: ^3.6
Suggests
- anandpilania/f3-jwt-middleware: JWT Auth Middleware for FatFreeFramework.
- anandpilania/f3-token-middleware: Token Auth Middleware for FatFreeFramework.
README
一个易于使用的 Fatfree-framework 验证器包,使用 F3 内置翻译。您也可以直接在模型中使用它。
注意:本包从 illuminate/validator 中移植了一些类和想法。
注意:样本字典/语言文件包含为 en.php.sample
,请以此作为参考。
## 使用方法
-
1: 初始化,传递数据和验证
`$validator = new Validator(
array('name' => 'Anand Pilania', 'email' => 'abc@def.ge'), array('name' => 'required|min:3|max:60', 'email' => 'required|unique:Models\User|email')
)->validate();`
注意:您还可以将更多数据传递给
validate
方法。-
另一种方法
`$validator = Validator::instance()->validate(
array('name' => 'Anand Pilania', 'email' => 'abc@def.ge'), array('name' => 'required|min:3|max:60', 'email' => 'required|unique:NAMESPACED_MODEL_CLASS_OR_CONFIG_MODEL.PARAM`|email')
);`
-
-
2: 获取验证状态(返回 -> true/false)
$validator->passed();
-
3: 如果验证失败,检索失败的属性及其格式化的消息/错误(返回 -> 数组)
$validator->errors();
设置
composer require anandpilania/f3-validator
规则
无参数使用
boolean
ORbool
,string
,integer
ORint
,array
,numeric
,alpha
,alpha_num
,alpha_dash
,url
,nullable
,json
,required
,confirmed
,active_url
,email
,ip
,ipv4
,ipv6
,filled
带参数使用
min
,max
,size
,between
-min:6
,max:255
,size:3
,between:1,3
unique
-unique:NAMESPACED_MODEL_CLASS_OR_CONFIG_MODEL
- ...
在模型中使用
- 推荐:在控制器中验证用户输入是推荐的方式
控制器
`$validator = Validator::instance()->validate($f3->get('POST'), array(
'field' => 'required|CHECK_PARAM' // EG: 'email' => 'required|email|unique:Models\User'
));`
`if(!$validator->passed()) {
return/flash $validator->errors();
}`
在模型中使用
- 您也可以直接在模型中使用此验证器:例如,在
beforesave
触发器上的验证:(此示例使用 ikkez/f3-cortex)
模型
`protected $validator;
public function __construct() {
parent::__construct();
$saveHandler = function() {
foreach($this->getFieldConfiguration() as $field => $conf) {
if(isset($conf['validate'])) {
$rules[$field] = $conf['validate'];
$data[$field] = $this->get($field);
if(Validator::instance()->str_contains($conf['validate'], 'confirmed')) {
$confirmation = $field.'_confirmation';
$data[$field.'_confirmation'] = null !== $f3->get('POST.'.$confirmation)?$f3->get('POST.'.$confirmation):$f3->get('GET.'.$confirmation);
}
}
}
$this->validator = Validator::instance()->validate($data, $rules);
return $this->validator->passed();
};
$this->beforesave($saveHandler);
}`
控制器
`$model = new MODEL;
$model->copyFrom($f3->get('POST'), array_keys($model->fieldConf));
$mode->save();
if($model->validator->passed()) {
// NO ERRORS
}else{
// VAIDATION FAILED
$errors = $model->validator->errors();
}`
-- http://about.me/anandpilania
使用唯一验证器(两种方法)
-
只需传递 NAMESPACE_MODEL_CLASS =>
unique:Models\User
-
在配置中定义,例如:
INI =>
MODEL.USERS = Models\User
HIVE => $f3->set('MODEL.USERS', 'Models\User');然后使用
unique:users