Recebendo parâmetros de rota no Laravel

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

Publicado em

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.

Gunnar Correa
Gunnar Correa

Autodidata, Graduado em Desenvolvimento Web, Especialista em Tecnologias na Educação e Pós-graduando em Segurança da Informação. Começou seus estudos na área de programação quando era criança, e atualmente, está estudando desenvolvimento de jogos. Fundador da SatellaSoft, criado em 2009 com o intuito de compartilhar conhecimento de forma gratuita e inédita.

Todos os nossos cursos em promoção
Todos os nossos cursos em promoção

Webstories

Todos os nossos cursos em promoção

Todos os nossos cursos em promoção

Deixe um comentário
Aguarde...
Todos os nossos cursos em promoção