2016-08-22 4 views
1

title, bodyphoto[]의 세 필드가있는 양식이 있습니다. 적어도 하나의 항목이 채워지도록 유효성을 검사하려고 시도하고 있지만 제대로 작동하지 않는 것 같습니다. 파일을 업로드하면 titlebody에 대한 오류 메시지가 계속 나타납니다.Laravel 5.2 파일 배열 유효성 확인

public function rules() 
{ 
    return [ 
     'title' => 'required_without_all:body,photo.*', 
     'body' => 'required_without_all:title,photo.*', 
     'photo.*' => 'required_without_all:title,body', 
     'photo.*' => 'mimes:jpeg,gif,png', 
    ]; 
} 

업데이트 : 조나단은 내 규칙이 잘못 있다고 지적했다. 나는 그것을 고쳤으며 지금 이것을 사용하고있다. 아직 작동하지 않습니다. 사진을 업로드하려고 할 때 다른 필드가 필요하다는 오류 메시지가 나타납니다.

public function rules() 
{ 
    return [ 
     'title' => 'required_without:body,photo.*', 
     'body' => 'required_without:title,photo.*', 
     'photo.*' => 'required_without:title,body|mimes:jpeg,gif,png', 
    ]; 
} 
+0

왜 같은 필드에 대해 두 가지 규칙이 있습니까? 제발 내가 무엇을하는지 자세히 설명해주세요. 나는 완전히 명확하지는 않지만 제 대답의 초안에서 몇 가지 가정을했습니다. – Jonathan

답변

0

당신이 photo 필드를 보장하기 위해 찾고 있다면 그런 다음 'photo' => 'array'이 필요하고 다음 배열의 아이들의 다른 검증에 대한 'photo.*' => ''를 사용할 수있는 배열입니다.

규칙은 파이프 문자 |으로 구분되어 있으므로이 두 규칙을 조합하려면 'photo.*' => 'required_without_all:title,body|mimes:jpeg,gif,png',이됩니다. 나는 규칙을 구분하기 위해 파이프를 사용하는 것을 보지 못해서 당신이 그것을 알고 있는지 확신 할 수 없다.

첫 번째 장소 (동일한 연관 배열의 두 키)와 규칙 중 하나를 부인하는 데 영향을주는 우선 순위가 잘못되었을 수 있습니다.

당신은 (당신이 지정된 모든 필드경우 누락해야 할 필요성을 규정으로 required_without_all을 사용하여 시작하는 바른 길에 있었다 생각하는 레코드) 이런 식으로 뭔가를 시도 할 수 :

public function rules() 
{ 
    return [ 
     'title' => 'required_without_all:body,photo', 
     'body' => 'required_without_all:title,photo', 
     'photo' => 'array', 
     'photo.*' => 'required_without_all:title,body|mimes:jpeg,gif,png', 
    ]; 
} 

Reference

+0

예, 감사합니다. 나는 눈살을 찌푸리고 메시지 작성 방법과 같은 규칙을 세우고 있었다. 각 메시지마다 한 줄씩. 나는 그 규칙을 고쳤고 그것들을 파이프로 분리했다. 도움이되지 않았다. ''photo '=>'array''가 무엇을 의미하는지 모르겠습니다. – timgavin

+0

명확히하려면 : 사용자가 적어도 하나의 필드를 채우길 원합니다. 따라서 사진을 업로드하거나 제목을 추가하거나 본문에 텍스트를 추가해야합니다. 그들은 빈 양식을 제출할 수 없습니다. – timgavin

+0

''photo '=>'array''는'photo' 값이 배열인지를 검사합니다. 당신이 n 개의 사진을 보내고 있기 때문에 각각의 사진은 맨 위에있는 배열에 캡슐화되어 있습니다. 첫 번째 유효성 검사는 배열을 받는지 확인하는 것입니다. – Jonathan