消息定义

验证的错误消息需要结合多种方式,如果没有定义,则显示默认消息。


字段名定义

以下是一个实例

  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. 'age' => array(
  10. 'between' => '1,120',
  11. 'format' => 'number',
  12. ),
  13. 'email' => array(
  14. 'format' => 'email',
  15. ),
  16. );
  17. }

在需要进行验证的地方

  1. $data = array(
  2. 'name' => 'ginkgo',
  3. 'age' => 121,
  4. 'email' => 'ginkgo@qq.com',
  5. );
  6. $validate = Loader::validate('User');
  7. $result = $validate->verify($data);
  8. if(!$result){
  9. echo end($validate->getMessage());
  10. }

会输出

  1. age must between 1 - 120

可以给 age 字段设置中文名,例如:

  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. 'age' => array(
  10. 'between' => '1,120',
  11. 'format' => 'number',
  12. ),
  13. 'email' => array(
  14. 'format' => 'email',
  15. ),
  16. );
  17. public function __construct() {
  18. $this->setAttrName('age', '年龄');
  19. }
  20. }

会输出

  1. 年龄 must between 1 - 120

setAttrName 方法说明

  1. function setAttrName( $attr [, $value = array()] )

参数

  • attr 字段名

    支持两种类型

    字符串:字段名

    数组:批量设置字段名

  • value 字段值

    attr 为字符串时为必须,当 attr 为数组时自动忽略。


消息定义

继续上一个例子,可以给输出消息设置中文,例如:

  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. 'age' => array(
  10. 'between' => '1,120',
  11. 'format' => 'number',
  12. ),
  13. 'email' => array(
  14. 'format' => 'email',
  15. ),
  16. );
  17. public function __construct() {
  18. $this->setAttrName('age', '年龄');
  19. $this->setTypeMsg('between', '{:attr} 只能在 {:rule} 之间');
  20. }
  21. }

会输出

  1. 年龄 只能在 1 - 120 之间

setTypeMsg 方法说明

  1. function setTypeMsg( $msg [, $value = array()] )

参数

  • msg 消息

    支持两种类型

    字符串:消息

    数组:批量设置消息

  • value 消息值

    msg 为字符串时为必须,当 msg 为数组时自动忽略。


格式消息定义

另一个例子:

  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. 'age' => array(
  10. 'between' => '1,120',
  11. 'format' => 'number',
  12. ),
  13. 'email' => array(
  14. 'format' => 'email',
  15. ),
  16. );
  17. }

在需要进行验证的地方

  1. $data = array(
  2. 'name' => 'ginkgo',
  3. 'age' => 111,
  4. 'email' => 'ginkgo#qq.com',
  5. );
  6. $validate = Loader::validate('User');
  7. $result = $validate->verify($data);
  8. if(!$result){
  9. echo end($validate->getMessage());
  10. }

会输出

  1. email not a valid email address

可以给格式消息设置中文,例如:

  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. 'age' => array(
  10. 'between' => '1,120',
  11. 'format' => 'number',
  12. ),
  13. 'email' => array(
  14. 'format' => 'email',
  15. ),
  16. );
  17. public function __construct() {
  18. $this->setAttrName('email', '邮箱');
  19. $this->setFormatMsg('email', '{:attr} 不是合法的 E-mail 地址');
  20. }
  21. }

会输出

  1. 邮箱 不是合法的 E-mail 地址

setFormatMsg 方法说明

  1. function setFormatMsg( $msg [, $value = array()] )

参数

  • msg 消息

    支持两种类型

    字符串:消息

    数组:批量设置消息

  • value 消息值

    msg 为字符串时为必须,当 msg 为数组时自动忽略。

注意:{:attr}{:rule} 这两个特殊标签会被 字段名规则 分别替换。


获取验证消息

可以使用 getMessage 方法获取,返回值是所有的错误消息数组,该方法没有参数。


规则消息定界符

上述几个例子可能有开发者注意,当规则中包含逗号 , 时,输出消息时会被替换成连字符 -,如果想要替换成其他字符,可以通过 ginkgo/Validate 实例的 delimiter 属性进行定义,默认为 -,如:

0.1.1 新增

  1. $obj_validate = new ginkgo/Validate();
  2. $obj_validate->delimiter = ' - '