thibaud-dauce / laravel-filters
轻松为您的 FormRequests 添加过滤器
6.5.0
2023-02-28 07:16 UTC
Requires
- php: ^7.0|^8.0
- illuminate/http: ^5.5|^6.0|^7.0|^8.0|^9.0|^10.0
- illuminate/pipeline: ^5.5|^6.0|^7.0|^8.0|^9.0|^10.0
- illuminate/support: ^5.5|^6.0|^7.0|^8.0|^9.0|^10.0
- laravel/helpers: ^1.3
Requires (Dev)
- orchestra/testbench: ^8.0
- phpunit/phpunit: ^9.0
README
安装
composer require thibaud-dauce/laravel-filters
基本用法
request()->filter([
'email' => ['trim', 'strtolower'],
'name' => ['trim', 'ucfirst'],
])->validate([
'email' => ['required', 'email'],
'name' => ['required', 'string'],
]);
request('email') // trimed and all lowercase
request('name') // trimed and ucfirst
更多示例,请查看 ./tests
目录。
其他可能性
原生 PHP 函数
$filters = new Filters([
'name' => ['trim', 'strtoupper'],
]);
$data = $filters([
'name' => ' Jane ',
]);
$this->assertEquals([
'name' => 'JANE',
], $data);
回调
$filters = new Filters([
'name' => ['ucfirst', function($value) {
return trim($value);
}],
]);
$data = $filters([
'name' => ' Jane ',
]);
$this->assertEquals([
'name' => 'Jane',
], $data);
可调用类
$filters = new Filters([
'name' => ['ucfirst', new class {
public function __invoke($value)
{
return trim($value);
}
}],
]);
$data = $filters([
'name' => ' Jane ',
]);
$this->assertEquals([
'name' => 'Jane',
], $data);
容器解析
然后 MyAwesomeFilter
将从容器中解析出来,并将调用 __invoke
方法。
$filters = new Filters([
'name' => ['ucfirst', MyAwesomeFilter::class],
]);
FormRequest 使用
为您的 FormRequest
添加一个 filters
方法
class MyRequest extend FormRequest {
public function authorized() { return true; }
public function rules() { return []; }
public function filters()
{
return [
'name' => 'trim';
];
}
}
请注意,规则将在过滤器之后进行检查。