2
respostas

[Dúvida] Validação imagem

eu fiz isso public function rules(): array { return [ 'nome' => ['required', 'min:3'], 'cover' => [File::image()->min(1024)->max(12 * 1024)] ]; } mas vi que se o usuário retirar o campo cover, a img é enviada , então pensei em colocar um required, mas esse campo vai ser obrigatório para quem usar a class SeriesFormRequest, ent eu pensei em criar um outro FormRequest mas gostaria de saber se tem outra solução sem ser dessa forma

2 respostas

Olá, Heber! Tudo bem?

Entendo sua preocupação em relação ao campo 'cover' ser obrigatório para quem usar a class SeriesFormRequest. Uma alternativa para não criar outro FormRequest seria usar uma validação condicional. O Laravel oferece uma maneira elegante de fazer isso por meio do método sometimes().

Aqui está um exemplo de como você pode aplicar isso ao seu código:

public function rules(): array
{
    return [
        'nome' => ['required', 'min:3'],
        'cover' => $this->when($this->method() == 'POST', ['required', File::image()->min(1024)->max(12 * 1024)]),
    ];
}

Neste exemplo, a validação 'required' para o campo 'cover' só será aplicada quando o método da requisição for POST. Você pode ajustar a condição $this->method() == 'POST' para se adequar ao seu caso específico.

Espero ter ajudado e bons estudos!

Opa, mto obrigado pela informação, mas aqui deu erro: Method App\Http\Requests\SeriesFormRequest::when does not exist. Então com base no que vc falou, eu fiz assim:

'cover' => ['sometimes', 'required', File::image()->min('1kb')->max('10mb')],

mas mesmo assim ainda acontece aquele problema :(