方法传递的参数如何验证?

andyzu
public function getClassesinfo(Request $request, $id){
    // ......
}

我定义了个方法,$request 里的值我用的是 tinywan/validate 验证的。
那这个 $id 应该咋验证?谁能给个示例,比如只能是整数

533 1 0
1个回答

软饭工程师

验证器写法

class UserValidate extends Validate
{
    public $rule = [
        'id' => 'require|number|checkUser',
    ];

    public $message = [
        'id.require' => '主键ID不能为空',
        'id.number' => '主键ID必须是数字',
        'id.checkUser' => '主键ID不合法',
    ];
    /**
     * @param int $value
     * @return bool
     * @author: sansi
     */
    public function checkUser(int $value): bool
    {
        return WaterUserModel::find($value) !== null;
    }
    protected $scene = [
        'create' => ['user_name,password'], // 新增数据时需要验证的字段
        'edit' => ['id'], // 编辑数据时需要验证的字段
        'query' => ['start_time', 'end_time'], // 查询数据时需要验证的字段
    ];
}
```、
如何调用
```php
    public function addUser($request,$id)
    {
        $validate = new UserValidate();
        if (!$validate->scene('edit')->check($request->post())) {
            throw  new  ApiException($validate->getError());
        }
        //接下来的逻辑处理
    }

也可以直接这样

use Tinywan\Validate\Validate;

class UserValidate extends Validate
{
    public $rule = [
        'id' => 'number',
    ];
    public $message = [
        'id.number' => '主键ID必须是数字',
    ];
}
    public function addUser($request,$id)
    {
        $validate = new UserValidate();
        if (!$validate->check(['id'=>111])) {
            throw  new  ApiException($validate->getError());
        }
        //接下来的逻辑处理
    }
  • 暂无评论
年代过于久远,无法发表回答
×
🔝