我是Laravel 5的初学者。
如何删除验证器中的空格?我已阅读文档,但没有修剪器的验证器(删除空格)。
这里是我的规则
$rules = [
'name' =>'required',
'email' => 'required|email',
'address' => 'required',
'phones' => 'required'
];
感谢您的回答。
答案 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
trim
或convert 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;
}