fewagency/laravel-reformulator

Laravel 中间件,用于过滤、净化、解析和转换请求输入数据。

dev-master 2019-03-20 07:38 UTC

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