axn / laravel-request-filters
此包已被废弃,不再维护。作者建议使用 use FormRequest::prepareForValidation() 包代替。
Laravel 表单请求过滤器
2.6.1
2020-05-17 09:28 UTC
Requires
- illuminate/support: ~5.0 || ^6.0 || ^7.0
README
此包 已废弃,建议使用 \Illuminate\Foundation\Http\FormRequest::prepareForValidation()
Laravel 请求过滤器
用于过滤 FormRequest 的输入数据。
例如,当它们通过 contenteditable 传递并且包含一些浏览器添加的内容时...
安装
使用 Composer 包含此包
composer require axn/laravel-request-filters
使用
总体来说,需要做两件事
- 在 FormRequest 中调用 traits
- 在 filters() 方法中定义要应用的自定义过滤器的列表
<?php namespace App\Http\Requests; use Axn\RequestFilters\FilterableFormRequest; use Illuminate\Foundation\Http\FormRequest; class MyRequest extends FormRequest { use FilterableFormRequest; public function filters() { return [ 'name' => 'stripped|trim' ]; } //... }
数据将在验证之前自动通过过滤器。
filters() 方法必须返回一个数组。该数组的键是请求字段名称,值是要应用的过滤器的名称。
可以将要应用的过滤器的名称作为数组传递
<?php //... public function filters() { return [ 'name' => [ 'stripped', 'trim' ] ]; } //...
您可以使用任何表示回调函数的字符串
<?php //... public function filters() { return [ 'name' => 'stripped|trim|strtolower|ucwords' ]; } //...
过滤器按照声明的顺序应用;换句话说,上面的 "stripped" 被应用,然后是 "trim",然后是 "strtolower" 和 "ucwords"。
提醒,回调可以是用户类的方法
<?php //... public function filters() { return [ 'name' => [ 'stripped', 'trim', 'Foo::Bar' ] ]; } //... class Foo { public static function Bar($str) { return ucwords(strtolower($str)); } } //...
也可以在闭包中声明一个过滤器
<?php //... public function filters() { return [ 'name' => [ 'stripped', 'trim', function($str) { return ucwords(strtolower($str)); } ] ]; } //...
可用的过滤器
trim
用于删除字符串两侧的空格
注意:包括空格字符 " "
strip
别名:stripped
或 sanitize_string
用于删除潜在的危险代码
实际上,将字符串传递到:filter_var($str, FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES)
url
别名:sanitize_url
删除不应出现在 URL 中的所有字符
实际上,将字符串传递到:filter_var($str, FILTER_SANITIZE_URL)
email
别名:sanitize_email
删除不应出现在电子邮件地址中的所有字符
实际上,将字符串传递到:filter_var($str, FILTER_SANITIZE_EMAIL)