terminusstudio/phpvalidator

使用 respect validator 的 PHP 验证器。为 Slim 构建。

1.1.0 2021-05-04 03:34 UTC

This package is auto-updated.

Last update: 2024-09-07 11:51:40 UTC


README

Latest Version on Packagist Software License Build Status Scrutinizer Total Downloads

一个使用 respect 验证包的 SlimPHP 验证器。

安装

通过 Composer

$ composer require terminusstudio/phpvalidator

用法

初始化

配置

$config = [
            'useSession' => false 
          ];
  • useSession - 如果设置为 true,验证结果将保存在会话变量中,可以在下一个请求中访问(使用 ValidatorMiddleware)。默认为 false。

使用容器

Container::set('validator', function() {
    return new \TS\PHPValidator\Validator($config);
});

不使用容器

$validator = new \TS\PHPValidator\Validator($config);

示例用法

public function login($request, $response) {
    if ($request->getMethod() == 'POST')
    {
        $v = Container::get('validator')->validate($request, [
            'email' => v::noWhitespace()->notEmpty()->email(),
            'password' => v::notEmpty()->length(8)->alnum('_'),

        ]);;

        if($v->isValid())
        {
            //Do Processing
        }
     }
    return View::render($response, 'login.twig');
}

中间件

如果将 $config 中的 useSession 设置为 true,可以将 ValidatorMiddleware 添加到 slim。

  public function postLogin($request, $response) {
        $v = Container::get('validator')->validate($request, [
            'email' => v::noWhitespace()->notEmpty()->email(),
            'password' => v::notEmpty()->length(8)->alnum('_'),
    
        ]);;
    
        if($v->isValid())
        {
            //Do Processing
        }
        
        return $response->withHeader('Location',  Router::getRouteParser()->urlFor('login.get'))->withStatus(302);;
    }

如果有任何错误,下一个请求将可以访问错误和值。要启用中间件,只需将 ValidatorMiddleware 类添加到 Slim 应用中,并传递验证器实例。

$app->add(new \TS\PHPValidator\ValidatorMiddleware(Container::get('validator')));

Twig 扩展

此插件还支持 Twig 函数。要启用,只需在初始化 twig 时添加 ValidatorTwig。这需要 slim/twig-view 包。

Container::set('view', function() {
    $view = Twig::create(....);

    // Add the validator extension and pass the validator instance to it
    $view->addExtension(
        new \TS\PHPValidator\ValidatorTwig(Container::get('validator'))
    );

    return $view;
});

扩展目前支持 5 个函数:

  • has_errors() - 如果存在任何错误,则返回 true
  • has_error($key) - 如果 $key 无效,则返回 true
  • get_errors() - 返回包含所有错误的数组
  • get_error($key, $toString = true) - 返回包含特定 $key 的所有错误的数组。如果 $toString 设置为 true,则返回字符串。
  • get_value($key, $default = null) - 返回特定 $key 的值。

$key 是请求中设置的字段名称。

{% if has_error('email') %}
    {{  get_error('email') }}
{% endif %}
<input type="email" name="email" value="{{ get_value('email') }}">

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件