模型验证

如果需要在模型中进行验证,可以调用模型类提供的 validate 方法进行验证,如:

  1. $data = array(
  2. 'name' => 'baigo',
  3. 'email' => 'baigo@qq.com',
  4. );
  5. $rule = array(
  6. 'name' => array(
  7. 'require' => true,
  8. 'max' => 25,
  9. ),
  10. 'email' => array(
  11. 'format' => 'email',
  12. ),
  13. );
  14. $result = $this->validate($data, $rule);
  15. if($result !== true){
  16. // 验证失败 输出错误信息
  17. print_r($result);
  18. }

如果定义了验证器的话,例如:

  1. namespace app\index\validate;
  2. use ginkgo\Validate;
  3. class User extends Validate {
  4. protected $rule = array(
  5. 'name' => array(
  6. 'require' => true,
  7. 'max' => 25,
  8. ),
  9. 'email' => array(
  10. 'format' => 'email',
  11. ),
  12. );
  13. protected $scene = array(
  14. 'add' => array(
  15. 'name',
  16. 'email',
  17. ),
  18. 'edit' => array(
  19. 'email'
  20. ),
  21. );
  22. }

模型中的验证代码可以简化为:

  1. $result = $this->validate($data, 'user');
  2. if($result !== true){
  3. // 验证失败 输出错误信息
  4. print_r($result);
  5. }

如果要使用场景,可以使用:

  1. $result = $this->validate($data, 'user', 'edit');
  2. if($result !== true){
  3. // 验证失败 输出错误信息
  4. print_r($result);
  5. }

如果模型和验证器位于同一模块,且同名,还可以进一步简化:

  1. namespace app\ctrl\index;
  2. use ginkgo\Model;
  3. use ginkgo\Loader;
  4. class User extends Model {
  5. function edit() {
  6. $result = $this->validate($data);
  7. if($result !== true){
  8. // 验证失败 输出错误信息
  9. print_r($result);
  10. }
  11. }
  12. }

如果要使用场景:

  1. namespace app\ctrl\index;
  2. use ginkgo\Loader;
  3. class User {
  4. function edit() {
  5. $result = $this->validate($data, '', 'edit');
  6. if($result !== true){
  7. // 验证失败 输出错误信息
  8. print_r($result);
  9. }
  10. }
  11. }