2016-09-24 6 views
0

파슬리에서 laravel의 required_if 유효성 검사를 구현하려고하는데이를 성공적으로 적용 할 수 있었지만 오류 메시지를 표시하는 동안 주요 문제가 발생했습니다. 나는 다음과 같은 사용자 정의 유효성 검사기 추가 한 -조건부 오류 메시지를 적용하는 방법?

window.Parsley.addValidator('lpyRequiredIf', { 
    validateString(value, requirement) { 
     const fieldValue = document.getElementsByName(requirement[0])[0].value; 
     if (requirement.indexOf(fieldValue) > -1) { 
      return value !== ''; 
     } 
     return true; 
    }, 
}); 

을 내 입력은 다음과 같습니다 -

<input class="form-control form-control-solid placeholder-no-fix" type="password" autocomplete="off" placeholder="Password" name="password" data-parsley-lpy-required-if="[&quot;email&quot;,&quot;[email protected]&quot;,&quot;[email protected]&quot;]" data-parsley-lpy-required-if-message="The password field is required when email address is :value." data-parsley-validate-if-empty="" data-parsley-whitespace="trim" data-parsley-lpy-custom-message="The password field is required when email address is :value."> 

지금 나는 그것이 laravel 검증에 표시됩니다 정확히 같은 메시지를 보여주고 싶어요.

이 표시되는 내용입니다 - 이메일 주소가있는 경우

암호 필드가 필요합니다 값입니다.

내가 보여주고 싶은 -

이메일 주소가 [email protected] 때 암호 필드가 필요합니다.

아무도 내가 이것을 어떻게 얻을 수 있는지 제안 할 수 있습니까? 기본적으로 나는 값을 유효성 검사가 실패 할 경우 입력 된 이메일 주소로 대체하려고합니다.

+0

당신은 단순히 '전자 메일 주소가 필요할 때 암호 필드가 필요합니다'라는 오류를 표시하고 사용자가 보낸 전자 메일 주소를 첨부 할 수 있습니다. –

+0

@MehravishTemkar 사용자 정의 유효성 검사기에서 어떻게 수행 할 수 있습니까? 사용자 정의 유효성 검사기에는 정적 메시지를 지정할 수 있지만 변수는 지정할 수 없습니다. 나는 검증이 실패 할 때마다 그것을 대체 할 수있는 옵션을 가지고있다.하지만 다시 한번 문제가 생기면 사용자 정의 유효성 검사에서 유효성 검사가 실패한 필드를 얻지 못한다. (이 유효성 검사를 사용하는 여러 필드가있을 수 있습니다.) – Anik

+0

tbh 파슬리를 사용한 적이 한번도 없었습니다 ... idk 왜 당신이 downvoted 있었는지, 그들은 적어도 이유를 지정해야합니다 .. 나는 당신이 곧 해결책을 얻길 바랍니다 .. 내가 알면 알려줄 것입니다 아무것도.. –

답변

0

나는 그것을 어떻게 할 수 있는지 알았다. 여기

window.Parsley.addValidator('lpyRequiredIf', { 
    validateString(value, ...requirement) { 
     let valid = true; 
     const formElement = $(requirement[requirement.length - 1].parent.$element); 
     const fieldToCheck = formElement.find(`[name= ${requirement[0]} ]`); 
     if (fieldToCheck.length !== 0) { 
      const fieldValue = fieldToCheck.val(); 
      const deferred = new $.Deferred(); 
      const baseErrorMessage = requirement[requirement.length - 1] 
            .domOptions.lpyRequiredIfMessage; 
      if (requirement.indexOf(fieldValue) > -1 && value === '') { 
       deferred.reject(baseErrorMessage.replace(':value', fieldValue)); 
      } else { 
       deferred.resolve(); 
      } 
      valid = deferred.promise(); 
     } 
     return valid; 
    }, 
}); 

나는 사용자 지정 오류 메시지를 반환하고 - - 내가 표시 할 필요가 사용자 정의 메시지로 첫 번째 인수와 JQuery와의 약속을 반환해야

deferred.reject (baseErrorMessage.replace를 ('값을 ', fieldValue));

P. - 코드는 좀 더 정제해야하기 때문에 질문에서 약간 편집됩니다.