2017-11-22 11 views
0

Laravel에서 개체의 연관 배열에 대한 유효성 검사를 수행하려고합니다. I는 컨트롤러로 전달개체 배열의 Laravel 배열

유효한 JSON 문자열은 다음과 같다 :

{ 
    'create': [ 
     { 
      'artnr': '123456', 
      'unit': 'Stk.' 
     }, 
     { 
      'artnr': '23456', 
      'unit': 'Kg.' 
     } 
    ], 
    'update': [ 
     { 
      'id': 1 
      'artnr': '567890', 
      'unit': 'Stk.' 
     }, 
     { 
      'id': 2 
      'artnr': '67836', 
      'unit': 'Kg.' 
     } 
    ] 
} 

데이터의 유효성을 검사하는 제어 기능과 같다 :

public function store(Request $request) 
{ 
    $request->replace(array(
     'create' => json_decode($request->create), 
     'update' => json_decode($request->update) 
    )); 

    $validator = Validator::make($request->all(), [ 
     'create' => 'required|array', 
     'create.*.artnr' => 'required|max:20', 
     'create.*.unit' => 'max:20', 
     'update' => 'required|array', 
     'update.*.id' => 'required|exists:products,id', 
     'update.*.artnr' => 'required|max:20', 
     'update.*.unit' => 'max:20' 
    ])->validate(); 
} 

I는 store 함수 지정되지만 모든 객체에 대해 artnr이 존재해야하며 컨트롤러는 artnr없이 객체를 전달할 때 오류를 발생시키지 않습니다.

내가 잘못하고있는 아이디어가 있습니까?


편집

좋아 user2486의 제안에 따라 서로 다른 샘플 데이터를 사용 후, 그래서 나는 지금은 id 같은 속성을 통과 할 때 유효성 검사기가 연관 배열로, artnr, unit을 작동 발견. 이처럼 : 나는 그러나 내 JSON 문자열을 디코딩 할 때

$arr = array(
    'create' => array(
     array(
      'artnr' => '123456', 
      'unit' => 'Kg' 
     ), array(
      'unit' => 'Stk.' 
     ) 
    ), 'update' => array(
     array(
      'id' => 1, 
      'unit' => 'Stk.' 
     ), array(
      'id' => 2, 
      'artnr' => '123456', 
      'unit' => 'Kg' 
     ) 
    ) 
); 

이 속성은 객체 때문에 오류가 발생하지 않습니다에 구문 분석됩니다!

유효성 검사기 규칙에서 객체에 대해 다른 종류의 표기법을 사용할 수 있습니까?

개체의 유효성을 검사 할 수 없으면 모든 개체를 연관 배열로 변환합니다.

+0

당신이 보낸 것으로 생각되는 샘플 데이터를 포함시킬 수 있습니까? –

+0

유효한 json을 가지고 있는지 확인 했습니까? – C2486

+0

json을 얻고 배열로 변환하는 대신 샘플 배열로 테스트하면 변환 코드를 확인해야합니다. – C2486

답변

0

그래, 해결책은 내 json_decode과 같은 기능을 json_decode($request->create, true)으로 호출하는 것이 었습니다. 두 번째 매개 변수를 true으로 설정하면이 함수가 모든 JSON 객체를 연관 배열로 변환합니다.