验证器问题Respect\Validation\Validator能否支持默认值

ric

问题描述

验证器很好用,可以严格的控制输入,而且$data,返回的就是数组,可以直接使用,但存在一个问题
没有传值的会自动默认为null,而我希望可以设置默认值,比如page参数,如果没有传的话,可以设置默认为10,这里我建议添加一个defaule()方法来实现。 我跟踪了input() 发现方法在workman的包中,所以不好直接更改。
截图

为此你搜索到了哪些方案及不适用的原因

这里写搜到的方案及不适用原因

截图

493 1 0
1个回答

walkor

欢迎pr

  • ric 2023-09-09

    大佬,帮忙合并下 https://github.com/walkor/validation/pull/1
    按需求添加了,并且合并了Respect/Validation最新的2.3版本,有了phone验证(https://www.workerman.net/q/8062)等
    'phone' => v::phone('cn')->setDefault('16687967488')->setName('手机号')

  • walkor 2023-09-09

    非常感谢,已经合并,版本 3.1.0

  • ric 2023-09-09

    👍👍

  • ric 2023-09-13

    大佬,在合并下https://github.com/walkor/validation/pull/3
    input 方法功能都做到这了上次提交的时候,一下子没有想到会有多维的验证场景,配合input和默认值的话,强制实现复杂多维格式的数据输入控制。

    
    function addRule(Request $request, AuthService $authService){
            $data = v::input([], [
                'app_id' => v::alnum()->setDefault($request->route->param('app_id'),true)->setName('应用名'),
                'data' => v::input($request->all(), [
                    'website_id' => v::intVal()->setDefault(0,true)->setName('站点id'),
                    'rule' => v::stringVal()->setName('api对外路径'),
                    'title' => v::stringVal()->setName('api接口名称'),
                ])
            ]);
            dump($data);
            return toTrue($authService->addRule($data));
        }

    感谢

  • walkor 2023-09-13

    好的 已经合并

  • ric 2023-09-14

    好的,谢谢

  • ric 2023-12-07

    @walkor 大佬,我推送了一个新的优化
    1、添加了mobile用于国内手机号验证,官方的phone会把电话号码也验证通过
    2、接口添加了setDefault,让使用->setDefault的方法后,ide也能自动跟踪,方便开发
    3、input判断,添加了判断输入值是否\Respect\Validation\Validator,不是的话就直接赋值.

    $data = v::input($request->post(), [
    'aaa' => 1,
    'phone' => v::optional(v::mobile())->setTemplate('未绑定/找到手机号'),
    'code' => v::stringType()->notEmpty()->setName('验证码'),
    'type' => v::intVal()->setDefault($this->data['type'],true)->setName('验证码类型'),
    ]);

    看下是否帮忙合并下?谢谢

  • walkor 2023-12-07

    感谢,已经合并

🔝