mjarestad / filtry
在 Laravel 4/5 中过滤和净化输入数据,或作为独立包。
v1.1.3
2016-06-30 12:49 UTC
Requires
- php: >=5.6.0
Requires (Dev)
- illuminate/support: 5.2.0.*
- phpunit/phpunit: 5.3.*
README
#Filtry
一个用于在 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 应用程序中使用。