Laravel 4 如何在字段到达Input::get(“我的字段”)之前对其进行筛选?

Laravel 4 如何在字段到达Input::get(“我的字段”)之前对其进行筛选?,laravel-4,Laravel 4,例如,我想删除所有输入字段中的单词“fck”。我知道我可以在之后做,但如果我能在之前做就太好了,所以它适用于我的整个应用程序 换句话说,我必须在哪里修改Laravel 4的输入(或http或请求)类?好吧,有几种可能性。最简单也是最简单的方法是简单地创建一个新的Inputfacade并重写它的get方法。大概是这样的: app/extensions/FilterableInput.php use Illuminate\Support\Facades\Input as IlluminateInpu

例如,我想删除所有输入字段中的单词“fck”。我知道我可以在之后做,但如果我能在之前做就太好了,所以它适用于我的整个应用程序


换句话说,我必须在哪里修改Laravel 4的输入(或http或请求)类?

好吧,有几种可能性。最简单也是最简单的方法是简单地创建一个新的
Input
facade并重写它的
get
方法。大概是这样的:

app/extensions/FilterableInput.php

use Illuminate\Support\Facades\Input as IlluminateInput;

class FilterableInput extends IlluminateInput {

    public static function get($key = null, $default = null)
    {
        return static::filterInput(parent::get($key, $default));
    }

    // Filtering method
    protected static function filterInput($value)
    {
        if (is_string($value))
        {
            return str_replace('fck', '***', $value);
        }

        return $value;
    }
}

别忘了用
FilterableInput
替换app/config/app.php上的
Input
别名,并将
app/extensions
添加到你的composer.json
自动加载.classmap
设置中。

好的,不管怎样,这很糟糕。它只对
Input::get()
有效,对
Input::all()
Input::only()
无效,您必须扩展
Illuninate\Http\Request
,然后执行类似于我对
Input::get()
所做的操作,但对于它的
Input()
方法,然后创建一个
服务提供商
,在应用程序上使用您自己的扩展版本,而不是原来的版本。