Easy to use Validation package for Fatfree-framework with using F3 built-in translations. You can also use it directly in the model.
NOTE: This package port some classes and ideas from illuminate/validator.
## Usage
-
1: Initializing, passing data and validate:
$validator = new Validator( array('name' => 'Anand Pilania', 'email' => '[email protected]'), array('name' => 'required|min:3|max:60', 'email' => 'required|unique:users|email') )->validate();
NOTE: You can also pass more data to the
validate
method. NOTE: Before usingunique
validator, you must have to define aGLOBAL
config parameterTABLE.TABLENAME = NAMESPACED_MODEL_CLASS
: ***unique:users
=>TABLE.USERS = App\Models\User
-
Another method:
$validator = Validator::instance()->validate( array('name' => 'Anand Pilania', 'email' => '[email protected]'), array('name' => 'required|min:3|max:60', 'email' => 'required|unique:users|email') );
-
-
2: Get validation status (return -> true/false):
$validator->passed();
-
3: If validation failed, retrieve the failed attribute with formatted messages/errors (return -> array):
$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:tableName
- ...
- You can also use this validator directly into your model:
FOR EX: Validatin on
beforesave
trigger: (This example is used with 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(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'), $model->fieldConf);
$mode->save();
if($model->validator->passed()) {
// NO ERRORS
}else{
// VAIDATION FAILED
$errors = $model->validator->errors();
}`