ProgramingTip

Laravel에서 배열의 유효성을 검사하는 방법은 무엇입니까?

bestdevel 2020. 10. 11. 10:57
반응형

Laravel에서 배열의 유효성을 검사하는 방법은 무엇입니까?


Laravel에서 어레이 POST의 유효성을 검사합니다.

$validator = Validator::make($request->all(), [
            "name.*" => 'required|distinct|min:3',
            "amount.*" => 'required|integer|min:1',
            "description.*" => "required|string"

        ]);

내가 POST를 비우고이 얻을 전송 if ($validator->fails()) {}False. 유효성 검사가 사실이라는 것은 사실입니다.

Laravel에서 배열을 숙주로하는 방법은 무엇입니까? 양식을 신청할 때input name="name[]"


별표 기호 (*)는 실제 배열이 아닌 배열의 값을 확인하고자 함을 의미합니다.

$validator = Validator::make($request->all(), [
    "name"    => "required|array|min:3",
    "name.*"  => "required|string|distinct|min:3",
]);

위의 예에서 :

  • "이름"은 요소가 3 개 이상인 배열이어야합니다.
  • "이름"배열의 값은 3 자 고유 한 (고유 한) 이상의 숫자입니다.

편집 : Laravel 5.5부터 다음과 같이 요청에서 직접 validate () 메서드를 호출 할 수 있습니다.

$data = $request->validate([
    "name"    => "required|array|min:3",
    "name.*"  => "required|string|distinct|min:3",
]);

이 배열을 HTML + Vue.js 데이터 그리드 / 테이블의 요청 데이터로 사용합니다.

[0] => Array
    (
        [item_id] => 1
        [item_no] => 3123
        [size] => 3e
    )
[1] => Array
    (
        [item_id] => 2
        [item_no] => 7688
        [size] => 5b
    )

그리고 이것을 사용하여 제대로 작동하는지 확인하십시오.

$this->validate($request, [
    '*.item_id' => 'required|integer',
    '*.item_no' => 'required|integer',
    '*.size'    => 'required|max:191',
]);

유효성 검사 및 권한 부여 논리를 작성하는 데 권장되는 방법은 해당 논리를 별도의 요청 클래스에 배치하는 것입니다. 이렇게하면 컨트롤러 코드가 깨끗하게 유지됩니다.

다음을 실행하여 요청 클래스를 만들 수 있습니다. php artisan make:request SomeRequest

요청 클래스의 규칙 () 메서드에서 유효성 검사 규칙을 정의합니다.

//SomeRequest.php
public function rules()
{
   return [
    "name"    =>[
          'required',
          'array', //input must be an array
          'min:3'//there must be three members in the array
     ],
    "name.*"  => [
          'required',
          'string',//input must be of type string
          'distinct',//members of the array must be unique
          'min:3'//each string must have min 3 chars
     ]
  ];
}

컨트롤러에서 다음과 같이 경로 함수를 작성하십시오.

public function someFunction(SomeRequest $request) 
{
  //request is already validated before reaching this point
  //your controller logic goes here
}

클래스는 요청 클래스의 명령 동작을 수정하기 위해 비즈니스 운영 및 특수 사례를 기반으로 사용자 정의 할 수있는 사전 및 사후 유효성 검사 후크 / 메서드와 함께 제공됩니다.

웹 및 API 요청과 같은 주문 유형의 요청에 대한 부모 요청 클래스를 만든 다음 구매할 부모 클래스에 몇 가지 요청 논리를 캡슐화 할 수 있습니다.


: 여기에 설명 된대로 각 입력에 대한 입력 배열 및 추가 규칙을 통해 루프가 루프 이상 규칙

다음은 몇 가지 코드입니다.

$input = Request::all();
$rules = [];

foreach($input['name'] as $key => $val)
{
    $rules['name.'.$key] = 'required|distinct|min:3';
}

$rules['amount'] = 'required|integer|min:1';
$rules['description'] = 'required|string';

$validator = Validator::make($input, $rules);

//Now check validation:
if ($validator->fails()) 
{ 
  /* do something */ 
}

참고 URL : https://stackoverflow.com/questions/42258185/how-to-validate-array-in-laravel

반응형