axn/laravel-request-filters

此包已被废弃,不再维护。作者建议使用 use FormRequest::prepareForValidation() 包代替。

Laravel 表单请求过滤器

2.6.1 2020-05-17 09:28 UTC

This package is auto-updated.

Last update: 2022-09-03 21:17:40 UTC


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

别名:strippedsanitize_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)