在Laravel 5.7中如何使用$ rules数组删除空白?

时间:2019-01-21 11:10:48

标签: php mysql laravel

我在修剪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
        )

)

2 个答案:

答案 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');

并使用它代替您收到的原始值。