Form validate with annotation, (*1)
Installation
Package is available on Packagist,
you can install it using Composer., (*2)
composer require layliaiyong/former
PHP 5.4+, (*3)
Annotation
Property must be protected. Annotation option value must be json string., (*4)
Annotation Patterns:
+ Former..., (*5)
End with https://github.com/Respect/Validation validator, (*6)
class TestFormer extends Former
{
/**
* @FormerNotEmpty {"message":"ID must not be empty"}
* @FormerIntVal {"message":"ID must be integer"}
*/
protected $id;
}
$data = new \stdClass();
$validator = new TestFormer();
// pass
$data->id = 1;
$valid = $validator->input($data)->validate();// true
$errors = $validator->errors();// []
// error
$data->id = 'abc';
$valid = $validator->input($data)->validate();// false
$errors = $validator->errors();// ["ID must be integer"]
End with respect/Validation
validator, (*7)
class TestFormer extends Former
{
/**
* @NotFormerIntVal {"message":"ID must not be integer"}
*/
protected $id;
}
$data = new \stdClass();
$validator = new TestFormer();
// pass
$data->id = 1;
$valid = $validator->input($data)->validate();// false
$errors = $validator->errors();// ["ID must be integer"]
// error
$data->id = 'abc';
$valid = $validator->input($data)->validate();// true
$errors = $validator->errors();// []
class TestFormer extends Former
{
/**
* @FormerObjectType {"message":"former must be object"}
* @Former {"message":"invalid former","former":"\\TestObjectFormer"}
*/
protected $former;
}
class TestObjectFormer extends Former
{
/**
* @FormerNotEmpty {"message":"ID must not be empty"}
* @FormerIntVal {"message":"ID must be integer"}
*/
protected $id;
}
$data = new \stdClass();
$former = new \stdClass();
$validator = new TestFormer();
// pass
$former->id = 1;
$data->former = $former;
$valid = $validator->input($data)->validate();// true
$errors = $validator->errors();// []
// error
$former->id = 'abc';
$data->former = $former;
$valid = $validator->input($data)->validate();// false
$errors = $validator->errors();// ["[former]invalid former","[id]ID must be integer"]
class TestFormer extends Former
{
/**
* @FormerObjectType {"message":"formers must be object array"}
* @Former {"message":"invalid formers","former":"\\TestObjectFormer"}
*/
protected $formers;
}
class TestObjectFormer extends Former
{
/**
* @FormerNotEmpty {"message":"ID must not be empty"}
* @FormerIntVal {"message":"ID must be integer"}
*/
protected $id;
}
$data = new \stdClass();
$former = new \stdClass();
$validator = new TestFormer();
// pass
$former->id = 1;
$data->formers = [$former];
$valid = $validator->input($data)->validate();// true
$errors = $validator->errors();// []
// error
$former->id = 'abc';
$data->formers = [$former];
$valid = $validator->input($data)->validate();// false
$errors = $validator->errors();// ["[formers]invalid formers","[id]ID must be integer"]
class TestFormer extends Former
{
/**
* @CaseFormer [{"message":"invalid case when value is 1","when":"FormerEquals","params":[1],"former":"\\TestCaseFormer"}]
*/
protected $case;
protected $case1;
}
class TestCaseFormer extends Former
{
/**
* @FormerNotEmpty {"message":"ID must not be empty"}
* @FormerIntVal {"message":"ID must be integer"}
*/
protected $case1;
}
$data = new \stdClass();
$validator = new TestFormer();
// pass
$data->case = 1;
$data->case1 = 2;
$valid = $validator->input($data)->validate();// true
$errors = $validator->errors();// []
// error
$data->case = 1;
$data->case1 = 'abc';
$valid = $validator->input($data)->validate();// false
$errors = $validator->errors();// ["[case]invalid case when value is 1","[case1]ID must be integer"]