Laravel 5消毒所需的野外行为

时间:2017-04-01 19:38:02

标签: laravel laravel-5.2

我正在尝试在this article

之后清理我的应用程序中的用户输入

以下是我的要求

Container

标题是必填字段,如果我尝试将class TestRequest extends Request { public function authorize() { return true; } public function rules() { $this->sanitize(); return [ 'title'=>'required|max:100' ]; } public function sanitize() { $input = $this->all(); if(!empty($input)) { $input['title'] = trim(strip_tags($input['title'])); $this->replace($input); } } } 作为输入添加到标题字段中,根据<h1></h1>函数中的逻辑,标记将被删除,但会保存空字符串在数据库中。规则中的必要字段验证没有产生任何影响。

如何处理?

更新

以下是用于保存请求的控制器方法。

sanitize()

1 个答案:

答案 0 :(得分:1)

第一个选项是在代码中使用merge()而不是replace(),即:

$this->merge( ['title' => trim(strip_tags($input['title']))] );

第二个选项是覆盖all()函数,即:

public function all()
{
    $input = parent::all();
    if( !empty($input) )
    {
        $input['title'] = trim(strip_tags($input['title']));
    }
    return $input;
}

在上一个代码示例中,您不必使用sanitize()函数。