mjarestad/filtry

在 Laravel 4/5 中过滤和净化输入数据,或作为独立包。

v1.1.3 2016-06-30 12:49 UTC

This package is auto-updated.

Last update: 2024-09-12 03:41:05 UTC


README

#Filtry

Latest Stable Version Build Status License

一个用于在 Laravel 4/5 中过滤和净化输入数据或作为独立包的包。这非常适合与 Laravel 4 验证类一起使用,在验证之前过滤数据。您可以轻松扩展并创建自己的自定义过滤器。

##要求 php 版本 > 5.6

##安装

composer require mjarestad/filtry

Laravel

将 ServiceProvider 添加到 app/config/app.php 中的 providers 数组。

Laravel 5:
Mjarestad\Filtry\FiltryServiceProviderLaravel5::class,

Laravel 4:
'Mjarestad\Filtry\FiltryServiceProvider',

将 Facade 添加到 app/config/app.php 中的 aliases 数组。

'Filtry'  => 'Mjarestad\Filtry\Facades\Filtry',

##使用方法

###Laravel 5

####表单请求

通过提供的 Filtry 请求扩展您的表单请求验证类,在验证之前过滤输入数据。

<?php

use Mjarestad\Filtry\Http\Requests\Request;

class StorePostRequest extends Request
{
    public function rules()
    {
        return [
            'author' => 'required',
            'slug'   => 'required',
        ];
    }

    public function filters()
    {
        return [
            'author' => 'trim|ucwords',
            'slug'   => 'trim|replace:%,percent|slug',
        ];
    }
}

###Laravel 4

将 filters 属性添加到您的 Eloquent 模型或您喜欢的任何地方。

<?php

class Post extends Eloquent {

    public static $filters = array(
        'author' => 'trim|ucwords',
        'slug'   => 'trim|replace:%,percent|slug'
    );

    public static $rules = array(
        'author' => 'required',
        'slug'   => 'required'
    );
}

在您的控制器或服务中调用 Filtry::make() 并提供要过滤的数据和过滤器数组。

<?php

$filtry = Filtry::make(Input::all(), Post::$filters);

要获取过滤后的值,使用 $filtry->getFiltered()

<?php

$validator = Validator::make($filtry->getFiltered(), Post::$rules);

要获取未过滤的值,使用

<?php

$filtry->getOld();

每个方法都可以用于过滤单个值。

<?php

Filtry::trim('some string');
Filtry::slug('some string');
Filtry::snakeCase('some string');

###独立使用

<?php

$filters = [
    'author' => 'trim|ucwords',
    'slug'   => 'trim|replace:%,percent|slug',
];

$data = [
    'author' => 'John Doe',
    'slug'   => 'My post title',
];

$filtry = new Mjarestad\Filtry\Filtry;
$filtry->make($data, $filters);
$filteredData = $filtry->getFiltered();

##创建自定义过滤器

###Laravel

通过自定义过滤器扩展,以在 Filtry::make() 中使用或作为动态方法。

<?php

Filtry::extend('my_custom_filter', function ($data) {
    return str_replace('-', '_', $data);
});

动态调用扩展的过滤器

<?php

Filtry::myCustomFilter('some-custom-string');

可选参数

您可以为您的过滤器定义可选参数。

<?php

Filtry::extend('custom_filter', function ($data, $param1, $param2) {
    return $data . ($param1 + $param2);
});

然后在您的请求中添加这些参数

<?php

use Mjarestad\Filtry\Http\Requests\Request;

class StorePostRequest extends Request
{
    public function rules()
    {
        return [
            'author' => 'required',
        ];
    }

    public function filters()
    {
        return [
            'author' => 'custom_filter:1,2',
        ];
    }
}

它将在作者属性上连接 3。

###独立使用

<?php

$filtry = new Mjarestad\Filtry\Filtry;

$filtry->extend('my_custom_filter', function ($data) {
    return str_replace('-', '_', $data);
});

$filtry->myCustomFilter('some-custom-string');

##可用过滤器

###核心 PHP 过滤器

  • trim
  • ltrim
  • rtrim
  • lower (strtolower)
  • upper (strtoupper)
  • ucfirst
  • ucwords
  • stripslashes
  • replace:search,replace (str_replace)

###自定义过滤器

  • xss_clean - 使用 htmlspecialchars 清理字符串
  • strip_whitespaces - 移除所有空白字符
  • strip_dashes - 移除所有破折号
  • slug - 使字符串适合 URL
  • prep_url - 如果不存在,添加 http://

###Laravel 过滤器

  • snake_case
  • camel_case
  • studly_case

这些过滤器仍可在非 Laravel 应用程序中使用。