terminusstudio / phpvalidator
使用 respect validator 的 PHP 验证器。为 Slim 构建。
1.1.0
2021-05-04 03:34 UTC
Requires
- php: ^7.3 || ^8.0
- psr/http-message: ^1.0
- psr/http-server-handler: ^1.0
- respect/validation: 2.0.17
Requires (Dev)
- nyholm/psr7: ^1.3
- phpunit/phpunit: ^9.0
- slim/slim: ^4.0
- squizlabs/php_codesniffer: ^3.5
- twig/twig: ^3.1
README
一个使用 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()- 如果存在任何错误,则返回 truehas_error($key)- 如果$key无效,则返回 trueget_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)。有关更多信息,请参阅 许可证文件。