我在修剪laravel $ rules数组时遇到问题。如果我从post传递带有空格的参数,Laravel会引发以下错误:
{ “ status”:“错误”, “ message”:“名字字段为必填。” }
我的Laravel验证代码为:
$rules = array(
'first_name' => 'required',
'last_name' => 'required',
'father_name' => 'required',
'mother_name' => 'required',
'grand_father_name' => 'required',
);
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
$messages = $validator->messages();
$return_message = array();
foreach ($messages->getmessages() as $key => $message) {
$return_message[] = implode(",", $message);
};
$response['status'] = 'error';
$response['message'] = implode(",", $return_message);
return $response;
}
$inputs = $request->all();
extract($inputs);
如何解决此问题,如何从first_name,last_name和任何类似参数中删除空格?
dd($ request-> all())显示以下内容:
Array
(
[first_name___] => demo name
[last_name] => demo last_name
[father_name] => demo father name
[mother_name] => demo mother name
[grand_father_name] => demo grand father name
(
[test:Symfony\Component\HttpFoundation\File\UploadedFile:private] =>
[originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 220.jpg
[mimeType:Symfony\Component\HttpFoundation\File\UploadedFile:private] => image/jpeg
[error:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 0
[hashName:protected] =>
[pathName:SplFileInfo:private] => D:\xampp\tmp\phpB456.tmp
[fileName:SplFileInfo:private] => phpB456.tmp
)
)
答案 0 :(得分:4)
引用您在问题中的评论
就像我在邮递员中传递带有空格的** first_name **这样的first_name参数
因此您会遇到此错误,因为您要发送格式错误的有效载荷,该载荷的格式在表单输入字段的名称中包含空格,因此您不应尝试在验证代码或其他任何地方处理它们。
您的问题是格式错误的有效载荷,因此您需要在源中修复它……在本例中是Postman,但是即使是生产问题,也有必要在HTML源代码中修复它。
答案 1 :(得分:4)
在某些情况下,空白可以在第一个或最后一个非空白字符之前或之后完全有效。如果您需要避免在没有空格的情况下进行验证,则可以在.trim()
被function
设置之前在客户端调用form
Javascript submit
,例如
myFormInput.value = myFormInput.trim();
但是,如果您真的想使用Laravel trim
进行输入,则可以执行以下操作:
Input::merge(array_map('trim', Input::all()));
您也可以trim
单个input
,例如:
$firstName = Input::get('first_name');
并使用它代替您收到的原始值。