私の管理パネルのファイルアップロード用にカスタム検証ロジックを追加しようとしています。ファイルがアップロードされたり変更されたりしなかった場合、私のファイルフィールドはIlluminate\Http\UploadedFile
またはstring|null
のいずれかを返すことがあります。だから、私がやっていることは、私はこのようになりますカスタムルールを作成し、次のとおりです。同じ属性にカスタム条件付き検証ルールを追加します
'image' => [
'required',
'admin_file:mimes:jpeg;png,dimensions:min_width=800;min_height=600'
]
私はその後、私は合格し、すべての引数を解析し、事は、私は自然にそれらのすべては私の場合に適用したいです値はUploadedFile
のインスタンスです。私は私のカスタム検証のために以下のコードを使用します。
class AdminFileValidator
{
public function validate($attribute, $value, $parameters, Validator $validator)
{
$rules = implode(
"|",
array_map(function($item) {
return str_replace(";", ",", $item);
}, $parameters)
);
$validator->sometimes($attribute, $rules, function() use ($value) {
return $value instanceof UploadedFile;
});
return true;
}
}
問題があり、sometimes
を経由して属性に追加のルールを追加すると、これらの追加されたルールはバリデータによって処理されていない、そのように動作しません。
これらのルールを検証する方法はありますかはすべて手動で再検証する必要はありませんか?
をそれは正直にあなたがしたいと思う理由も意味がありませんこのためのカスタムバリデータを作成します。 Laravelには、ファイルが正常にアップロードされたかどうかを確認する 'file'ルールが付いています。オプションにするルールもあります。 – Sandeesh
検証が必要なファイルには、さまざまな種類があります。文書、画像、画像+ pdfなどと同じです。そしてmimeルールは 'UploadedFile'インスタンスのみを受け入れ、文字列が渡されると失敗します(すべてが' FormRequest'にラップされているため、合理的に避けられません)。 – Eternal1
文字列の値をスローするのではなく、エラー?私が見ている限り、 'file'、' mimetypes'、 'mimes'というルールは、時には文字列許容量を除いて必要なものとまったく同じです。私はフォームファイルの入力で文字列をどうやって取得するのか分かりません。 – Sandeesh