lin-cms-tp/param-core

LinCms TP 的反射验证器核心类,含参数中间件封装,路由参数验证中间件,方法注释参数提取器,基于`wangyu/reflex-core`扩展

0.0.1 2019-08-15 09:21 UTC

This package is auto-updated.

Last update: 2024-10-16 19:29:39 UTC


README

LinCms TP 的反射验证器核心类,含参数中间件封装,路由参数验证中间件,方法注释参数提取器,基于wangyu/reflex-core扩展

composer安装

composer require lin-cms-tp/validate-core

默认参数

反射参数验证

  • 需要在系统config配置middleware.php
<?php
return [
    // 默认中间件命名空间
    'default_namespace' => 'app\\http\\middleware\\',
    'linRouteParam' => LinCmsTp\Param::Class
];
  • 需要在接口类注释设置@middleware
/**
 * Class Book
 * @route('v1/book')
 * @middleware('linRouteParam')
 * @package app\api\controller\v1
 */
class Book
{}

配置方法注释参数验证,有两种方式

使用 @validate 模型验证器

  • 例如:@validate('LoginForm') 相当于调用的\app\api\validate\user\LoginForm去验证
/**
 * 账户登陆
 * @route('cms/user/login','post')
 * @param Request $request
 * @validate('LoginForm')
 * @return array
 * @throws \think\Exception
 */
public function login(Request $request)
{
    (new LoginForm())->goCheck();
    $params = $request->post();

    $user = LinUser::verify($params['nickname'], $params['password']);
    $result = Token::getToken($user);

    logger('登陆领取了令牌', $user['id'], $user['nickname']);

    return $result;
}
  • 例如:@validate('\app\api\validate\user\LoginForm') 相当于调用的\app\api\validate\user\LoginForm去验证

这种方式只是为了完成某种特定的验证模型路径开发的,以/开头或者\\,都会当作验证器类的完整命名空间,不会再去目录下检测类是否存在

/**
 * 账户登陆
 * @route('cms/user/login','post')
 * @param Request $request
 * @validate('\app\api\validate\user\LoginForm')
 * @return array
 * @throws \think\Exception
 */
public function login(Request $request)
{
    (new LoginForm())->goCheck();
    $params = $request->post();

    $user = LinUser::verify($params['nickname'], $params['password']);
    $result = Token::getToken($user);

    logger('登陆领取了令牌', $user['id'], $user['nickname']);

    return $result;
}

使用 @param 参数验证器

'参数规则' 对应TP的验证规则,例如:@param('id','ID','require|max:1000|min:1')

/**
 * 查询指定bid的图书
 * @route('v1/book/:bid','get')
 * @param Request $bid
 * @param('bid','bid的图书','require')
 * @return mixed
 */
public function getBook($bid)
{
    $result = BookModel::get($bid);
    return $result;
}

联系我们

  • QQ: 354007048
  • Email: china_wangyu@aliyun.com