Laravel 5验证修剪

时间:2015-04-01 08:32:50

标签: php laravel trim

我是Laravel 5的初学者。

如何删除验证器中的空格?我已阅读文档,但没有修剪器的验证器(删除空格)。

这里是我的规则

$rules = [
        'name' =>'required',
        'email' => 'required|email',
        'address' => 'required',
        'phones' => 'required'
    ];

感谢您的回答。

7 个答案:

答案 0 :(得分:9)

验证者无法更改任何输入数据。 CodeIgniter中存在修剪验证器,但对我而言,这不是执行修剪的正确位置。

您可以使用以下方法自动修剪所有输入:

Input::merge(array_map('trim', Input::all()));

现在完成其余的编码:

$username = Input::get('username'); // it's trimed 
// ...
Validator::make(...);

答案 1 :(得分:4)

您可以使用以下代码修剪所有字符串输入(因为您可能在输入中有数组)

    // trim all input
    Input::merge(array_map(function ($value) {
        if (is_string($value)) {
            return trim($value);
        } else {
            return $value;
        }
    }, Input::all()));

答案 2 :(得分:3)

由于记录laravel HTTP Request 默认情况下,laravel会修剪所有请求数据。


Trim验证部分中的请求太脏了。 您可以使用middleware

管理trimconvert empty string to null之类的功能

因为中间件在验证之前执行,您可以在验证中获得干净的数据

答案 3 :(得分:2)

在Laravel 5.2或5.3中,您可以使用trim修剪空格,如此

$input = array_map('trim', $request->all());

所以这将删除发布的所有空间表单输入,并且验证将正常工作

答案 4 :(得分:1)

public function formatInput()
{
  $input = array_map('trim', $this->all());
  $this->replace($input);
  return $this->all();
}

答案 5 :(得分:0)

$data = $r->all();
foreach ($data as $key => $value) {
if($value!=""){ //If your primaryKey id is autoincrement
   $data[$key] = preg_replace('/\s{2,}/',' ',$value);
}
}
$variable = new modelName($data);
$variable->save();

//Here Parameter Explaination
 => '/\s{2,}/' Pattern must write between '/ /' and \s{2,} means 2 or more than 2 spaces sholud be trim
 => ' ' second parameter is with. Means 1st parameter replace with 2nd parameter(here, one space)
 => $value is variable which is trim

答案 6 :(得分:0)

您可以在请求文件中使用它。

$input = request()->all();
$input['url'] = trim($input['url']);
request()->replace($input);

您还可以在请求文件中创建all()函数来更新请求参数:

 public function all()
    {
        $all = parent::all(); // $this->all();
        $all['new_key'] = "new_data";
        $all['old_key'] = "new_data";

        return $all;
    }