尊重验证 php 苗条自定义消息



我已经阅读了文档,我想知道是否可以根据规则和属性制作自定义消息,例如我有以下代码

 $casoValidator =  Validator::attribute('nombre',Validator::allOf(Validator::stringType(),Validator::notOptional(),
     Validator::stringType()->length(3,100))) //nombre, validamos que sea cadena, que es obligatorio y que tiene de 3 a 100 caracteres 
    ->attribute('idUsuario',Validator::allOf(Validator::intType())) 
    ->attribute('numeroSertel',Validator::allOf(Validator::stringType(), Validator::stringType()->length(1,100)))
    ->attribute('dni',Validator::allOf(Validator::stringType(), Validator::stringType()->length(8,20)));                                                                  //la capturaremos al hacer insert si hay problemas con las FK

        try {
            $asuntoValidator->assert($asunto);
        } catch(NestedValidationException $exception) {
            $errors = $exception->findMessages([
                'length' => '{{name}} no puede tener mas de 100 caracteres ni menos de uno',
                'notOptional' => '{{name}} no es opcional',
      .... 

如您所见,我对"nombre"和"dni"有不同的长度,所以我应该返回两个不同的消息,一个是您不能少于 3 个字符或超过 100 个字符对于 dni,我应该返回 dni 不能少于 8 个字符或超过 20 个字符

有没有办法?

为自定义模板所需的每个规则添加单独的setTemplate方法调用。例如:

    $rule = v::key('color', v::alnum()->setTemplate('{{name}} must be alphanumeric value, for ex. f7f1d5'))
        ->key('color', v::length(6,6)->setTemplate('{{name}} must be a 6-character value'));

    $params['color'] = '¯_(ツ)_/¯';
    try{
        $rule->assert($params);
    } catch (NestedValidationException $e) {
        $errors = $e->getMessages();
    }
    var_dump($errors);

结果:

array (size=2)
0 => string 'color must be alphanumeric value, for ex. f7f1d5' (length=48)
1 => string 'color must be a 6-character value' (length=33)

最新更新