Laravel 4 如何在字段到达Input::get(“我的字段”)之前对其进行筛选?
例如,我想删除所有输入字段中的单词“fck”。我知道我可以在之后做,但如果我能在之前做就太好了,所以它适用于我的整个应用程序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
换句话说,我必须在哪里修改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()
方法,然后创建一个服务提供商
,在应用程序上使用您自己的扩展版本,而不是原来的版本。