2017-02-11 17 views
2

私は拡張用のカスタムバリデータを作成しました::values部品を交換していないようだLaravel:値のプレースホルダが機能していませんか?

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

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

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

とカスタムメッセージを。私はカスタムを使用してみました

は運なしでも置き換える:

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

しかし、これはどちらか何もしません。

何が欠けていますか?

+0

は、あなたがこのメッセージを使用してテストしていますタイプ:値.'? – PaladiN

+0

はい、動作しません。さらに、 'mimes'型のバリデーション' mimes '=>'から直接コピーしました::属性は::値のタイプのファイルでなければなりません。 '、 ' – Rob

答えて

5

Laravelはデフォルトでvaluesプレースホルダを変換しません。あなたはreplacerdocs)を使って正しいことをしました。しかし、いくつかの間違いをしたように見えます。

の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.', 
関連する問題