Roger Neves
Criador Roger Neves 15/11/2021

Bom dia, se eu quiser validar um cep ou um dado que tenho que validar de acordo com uma api de terceiros, por exemplo de eu for validar um cep, quero verificar se o cep realmente existe como devo fazer isso, o que seria melhor ?? 

Manager Carlos Ferreira 15/11/2021

Olá, Roger!
Tudo bem?

No backend você até pode usar um regex para validar o formato e etc, semelhante a este exemplo aqui (validação de preço com regex): https://github.com/especializati/larafood/blob/master/app/Http/Requests/StoreUpdateProduct.php

Agora, para validar o CEP mesmo (além dos números, formato e etc), na minha visão fica mais correto validar no frontend, quando o usuário digitar, você consulta em uma API externa neste momento e valida se está ok ou não.

Carlos Ferreira
Criador Roger Neves 15/11/2021

O problema que esse dado está vindo pela rota, são dois ceps de origem e de destino , o formrequest não pega dados da rota. 

se por acaso eu for criar uma classe ou um arquivo para validar esses dados?

Qual seria a melhor pratica ? 

Roger Neves
Manager Carlos Ferreira 15/11/2021

Esses dados não vem de uma request post?

Ainda sim é possível pegar, com o nome do parâmetro na URL:
// No Form Request
$this->nomeParametro1
$this->nomeParametro2

// Rota
Route::get('url/{nomeParametro1}/sdfsd/{nomeParametro2}', [...]);

Carlos Ferreira
Criador Roger Neves 15/11/2021
tentei assim mas não está funbcionando
<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class UploadRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
   
        return [
            $this->cep => 'required',
           
        ];
    }
}
Roger Neves
Manager Carlos Ferreira 15/11/2021

Ficou errado amigo, $this->nomeParametroRota é apenas para pegar o valor.

O Form request deve ser usado para validar dados de uma request post
'key' => 'validações'

Exemplo:
'price' => "required|regex:/^\d+(\.\d{1,2})?$/",

---

Se quer validar algo que vem da URL (que é meio estranho, precisaria entender o contexto todo para te ajudar a identificar o melhor cenário, e mais SEGURO), você pode fazer isso diretamente onde for receber os dados (no parâmetro do controller) ou mesmo no Form Request:
'cep1' => ['required', "regex:^[0-9]{5}-[0-9]{3}$"],
'cep2' => ['required', "regex:^[0-9]{5}-[0-9]{3}$"],

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!