2017-01-23 2 views
0

Laravel 5.3 앱과 사용자 프로필 값을 보내는 업데이트 양식이 있습니다. 그 중 하나는 사용자 이미지이기도합니다. 숨겨진 입력 필드를 만들고 있습니다. 사용자가 새 이미지를 업로드하지 않으면 이전 이미지 값으로 숨겨진 필드를 볼 수 있습니다.필드가 다른 필드가 비어있는 경우 Laravel 유효성 검사 규칙이 필요합니다.

<input type="hidden" class="form-control" name="old_image" value="{{ $player->image_filename }}" id="oldImage"> 

사용자가 이미지를 제거하면 숨겨진 입력 값이 비어있게됩니다.

document.getElementById('oldImage').value = ''; 

사용자 이미지를 업데이트하는 방법입니다. 하지만 그 양식에 대한 유효성 검사 규칙을 설정하는 방법을 모르겠습니다. 이와 유사한 것이 무엇인가 :

public function rules() 
    { 
     return [ 
      'first_name' => 'required|max:50', 
      'last_name' => 'required|max:50', 
      'birthday' => 'required', 
      'image' => required if old_image empty 
     ]; 
    } 

나는 'image' => 'required_if:old_image, null',와도 'image' => 'required_without:old_image',와 함께 시도했지만 그들 중 누구도 이미지를 누락 오류 메시지를 보이지 않았다. 나는 다음과 같은 오류 메시지를 표시하고 있습니다 :

+0

http://stackoverflow.com/questions/41697979/ laravel-5-3-use-custom-validation/41698396 # 41698396 – Bugfixer

+0

또는 조건 – Bugfixer

+0

에 조건이 있으면 required_if 유효성 검사 규칙을 사용할 수 있습니다. 다음을 참조하십시오. https://laravel.com/docs/5.3/validation – mith

답변

1

이이 required_without 규칙에 의해 수행 할 수있다이

if (empty($request->input('old_image'))){ 
    $this->validate($request, [ 
     'image' => 'required', 
    ]); 
} 
else { 
    // Validation in case of else goes here 
    $this->validate($request, [ 
     // rule 
    ]); 
} 
+0

위의 설명에서 말한 내용입니다. – Bugfixer

+1

Laravel 래퍼가 있습니다. ['$ request-> has ('old_image')'] (https://laravel.com/docs/5.1/requests#retrieving-input) – devk

1

을 시도, 그것은 작동하지 않는 경우 실제 샘플 요청 데이터 (dd(request()->all()))하고있는 유효성 검사 규칙을 제시해주십시오 사용. 두 필드가 비어있는 경우 catch하려는 시나리오는 간단합니다. 귀하의 예제에서

는이 규칙을 적용하는 작업을해야 :

return [ 
      // ... 
      'image' => 'required_without:old_image' 
     ]; 

required_without : 검증 아래의 필드가 존재하고 비어 있지해야

foo는, 바, ...에만있는 다른 지정된 필드는 없습니다. Validation - Laravel 5.3

예 :

$rules = [ 
     'new_value' => 'required_without:old_value' 
     ]; 

validator(
     ['new_value' =>'', 
     'old_value' => 'old value is preserved here'] 
    , $rules)->errors()->toArray(); 

// output: [] <-- no errors! 

validator(
     ['new_value' =>'New value!', 
     'old_value' => ''] 
    , $rules)->errors()->toArray(); 

// output: [] <-- no errors! 

validator(
     ['new_value' =>'', 
     'old_value' => ''] 
    , $rules)->errors()->toArray(); 

// output: ["new_value" => ["The new value field is required when old value is not present."]] 
+0

이 대답을 받아 들여야합니다. Laravel 규칙과의 통합에는 배열 구성 (예 : Folklore GraphQL)이 필요하며 비 순수한 유효성 검사로는 충분하지 않습니다. – kirgy

0

당신은 두 가지 규칙

'image' => 'required_if:old_image,' // yes, nothing after comma 

또는 작업 할 수 있습니다 :

'image' => 'required_without:old_image,' 
관련 문제