2017-02-11 1 views
2

나는 확장에 대한 사용자 지정 유효성 검사기를 만들었습니다Laravel : 값 자리 표시자가 작동하지 않습니까?

Validator::extend('extension', function ($attribute, $file, $extensions, $validator) { 
    $ext = strtolower(@$file->getClientOriginalExtension()); 

    return in_array($ext, $extensions); 
}); 

그리고 사용자 정의 메시지가 :

'extension' => 'The :attribute must be a file of type: :values.', 

:values 부품을 교체하지 않는 것 같습니다. 나는 정의를 사용하여 시도했다

운이없이 또한 대체 :

Validator::replacer('wtf', function ($message, $attribute, $rule, $parameters) { 
    return 'show me something!!!!!'; 
}); 

하지만이 중 아무것도하지 않습니다.

무엇이 누락 되었습니까?

+0

가이 메시지를 사용하여 테스트 한 유형 : 값 .'? – PaladiN

+0

예, 작동하지 않습니다. 게다가 mime 형식 검증에서 직접 복사했습니다. mime '=>': 속성은 : values ​​형식의 파일이어야합니다. ', – Rob

답변

5

Laravel은 기본적으로 values 자리 표시자를 번역하지 않습니다. replacer (docs)을 사용하여 올바른 결과를 얻었습니다. 하지만 실수 한 것처럼 보입니다.

ServiceProvider 코드 : 컨트롤러에서

// in boot method define validator 
Validator::extend('extension', function ($attribute, $file, $extensions, $validator) { 
    $ext = strtolower(@$file->getClientOriginalExtension()); 

    return in_array($ext, $extensions); 
}); 
// then - replacer with the same name 
Validator::replacer('extension', 
    function ($message, $attribute, $rule, $extensions) { 
     return str_replace([':values'], [join(", ", $extensions)], $message); 
}); 

:

$validator = Validator::make($request->all(), [ 
    'file' => 'required|extension:jpg,jpeg', 
]); 

언어 파일에서`: 속성은 파일이어야합니다

'extension' => 'The :attribute must be a file of type: :values.', 
관련 문제