fewagency / laravel-reformulator
Laravel 中间件,用于过滤、净化、解析和转换请求输入数据。
Requires
- php: >=5.5.9
- fewagency/carbonator: ^1.0
- illuminate/http: ^5.1
Requires (Dev)
- phpunit/phpunit: ^4.8
This package is auto-updated.
Last update: 2024-09-20 19:09:34 UTC
README
Laravel 中间件,用于过滤、净化、解析和转换请求输入数据。
注意:如果您希望在验证和其他处理之前操纵传入的请求,则建议使用 Laravel 的 FormRequest
而不是此包的中间件。如果您的 FormRequest
中的 prepareForValidation()
方法中进行操作,则您的意图将更容易理解,而不是在某个中间件中隐藏起来。
此外,由于 Laravel 5.4
已经默认应用了用于修剪字符串和将空字符串转换为 null
的中间件,因此这个包已经很长时间不再必要了。
安装与配置
composer require fewagency/laravel-reformulator
在您的 Laravel 应用的 app/Http/Kernel.php
中的 $routeMiddleware
数组中注册您想要使用的每个中间件
'reformulator.trim' => \FewAgency\Reformulator\Middleware\TrimInput::class, 'reformulator.strip_repeats' => \FewAgency\Reformulator\Middleware\StripRepeatNonWordCharsFromInput::class, 'reformulator.filter' => \FewAgency\Reformulator\Middleware\FilterInput::class, 'reformulator.remove_empty' => \FewAgency\Reformulator\Middleware\RemoveEmptyInput::class, 'reformulator.clean_array' => \FewAgency\Reformulator\Middleware\CleanArrayInput::class, 'reformulator.concatenate' => \FewAgency\Reformulator\Middleware\ConcatenateInput::class, 'reformulator.explode' => \FewAgency\Reformulator\Middleware\ExplodeInput::class, 'reformulator.datetime-local' => \FewAgency\Reformulator\Middleware\DatetimeLocalInput::class, 'reformulator.datetime' => \FewAgency\Reformulator\Middleware\DatetimeInput::class,
每个中间件的用法和参数目前在 每个类中 有文档说明,但总的来说,大多数中间件接受一个字段名称列表作为中间件参数。
有关中间件的更多信息,请参阅 Laravel 文档。
原则
有些人可能会说,修改 Request
对象并不是一个好的主意,例如,请参阅 GrahamCampbell 对 Laravel 问题 10725 的评论。
我的观点是,当以下条件满足时,修改请求中的数据是有意义的:
- 相同的转换也可以在客户端提交之前完成,或者代替传输方法的不足(例如,无法提交空数组)
- 转换绝对不会违反用户的意图(因为我们没有给用户机会批准更改)
- 转换不会破坏视图的重新填充(即表单)
收听 Full Stack Radio 第 54 集与 Jonathan Reinink 和主持人 Adam Wathan,其中有一段关于表单处理的有趣对话。Adam 然后继续创建了 一个宏的 gist,用于将过滤功能添加到 Laravel 的 Request
。
作者
Björn Nilsved,我在 FEW 任职期间创建了此包。FEW