Recebendo parâmetros de rota no Laravel

Com algumas regras conseguimos obter os parâmetros de rotas nos métodos especificados.

Criando uma aplicação com área administrativa utilizando o Laravel

Rotas como muitos sabem, serve para que nós possamos definir a regra de um determinado caminho, especificado o que fazer quando uma url é assertiva. Existem várias formas de receber e tratar parâmetros de rotas no Laravel, porém aqui vamos ver duas das aplicações.

É importante enfatizar que devemos sempre olhar para a nossa regra de negócio ao trabalhar com rotas, assim conseguimos definir um roteamento mais assertivo e garantir que tudo está funcionando perfeitamente.

Parâmetros de rota obrigatórios

Como citado acima, devemos sempre olhar para a nossa regra de negócio, sendo assim, vamos desenvolver um método que recebe o nome de uma cidade e seu respectivo estado. As duas informações são obrigatórias, retornando um JSON como resposta

Veja o código do nosso método abaixo, perceba que no parâmetro temos as variáveis/parâmetros chamadas $cidade e outra de $estado.

    public function minhaFuncao(string $cidade, string $estado)
    {
        return response()->json([
            'cidade' => $cidade,
            'estado' => $estado
        ]);
    }

Quando declarar a nossa rota, informamos os parâmetros através do caractere “{“, seguido do nome da variável e por fim “}”. Exemplo: {minha-variavel}.

Podemos declarar quantos parâmetros a gente precisar, porém a ordem que esses parâmetros são declarados na rota devem ser os mesmos dos métodos. É importante nunca declarar variáveis diferentes para a rota e outra para o método.

Veja um exemplo que não irá resultar em erro, porém a convenção nos diz para sempre manter os mesmos nomes que serão utilizados no método.

Route::get('/obter-informacao/{teste}/{teste2}', [LayoutController::class, 'minhaFuncao']);

Agora veja o exemplo recomendado.

Route::get('/obter-informacao/{cidade}/{estado}', [LayoutController::class, 'minhaFuncao']);

É importante enfatizar que os dois exemplos de rotas acima estão corretos e funcionais, porém o segundo é o mais aceito pela comunidade, já que é visível na rota que esperamos por uma cidade e um estado, enquanto o primeiro exemplo não.

Exemplo de chamada: http://localhost:8000/obter-informacao/prudente/sp

Parâmetros de rotas opcionais

Agora vamos imaginar que a nossa regra de negócio espera apenas pela cidade, já que o evento Xpto está acontecendo no estado de São Paulo, tornando a informação da UF algo irrelevante.

Para garantir um parâmetro opcional, vamos ter que declarar um valor padrão na assinatura do nosso método. É importante que os parâmetros opcionais sejam sempre os últimos, conforme exibido no código abaixo.

    public function minhaFuncao(string $cidade, string $estado = 'SP')
    {
        return response()->json([
            'cidade' => $cidade,
            'estado' => $estado
        ]);
    }

Agora na nossa rota, devemos apenas adicionar o caractere “? “antes do último colchete, conforme o exemplo abaixo. Note também que a rota opcional é a última a ser definida.

Route::get('/obter-informacao/{cidade}/{estado?}', [LayoutController::class, 'minhaFuncao']);

Exemplo de chamada: http://localhost:8000/obter-informacao/prudente

No exemplo de código acima, uma vez que o estado não for especificado na rota, o valor SP será definido, mas se a gente especificar PR, então o valor SP será ignorado e passa a valer o que está na rota.

Agora que você já entendeu o básico do funcionamento dos parâmetros de rota, poderá consultar a documentação oficial para obter mais exemplos de outras aplicações.