Receber parâmetros via get com Laravel

Parâmetros gets são transportados via Query String e podem facilmente ser acessados.

Vamos ver nesse artigo como obter parâmetros via get utilizando a classe Request. Todos os parâmetros que a gente vai utilizar estão definidos via query string na url, por tanto, não é necessário fazer ajuste algum em nossas routers.

É importante que o desenvolvedor saiba quando utilizar parâmetros via get e quando utilizar fixos nas rotas, nós não vamos abordar isso aqui, visto que ambas as implementações estão corretas e são funcionais.

Para o nosso exemplo, vamos utilizar a rota abaixo.

Route::get('/', [LayoutController::class, 'index']);

Vamos acessar a rota da seguinte forma na url: http://127.0.0.1:8000?product=mouse&price=19.90&amount=15.

Veja que temos alguns parâmetros com seus respectivos valores, sendo eles:

Query StringValor da URLValor padrão
productmouseno name
price19.900.00
amount150

Na última coluna da nossa tabela, nós temos os valores padrão, eles não estão explícitos na url porém fazem parte da nossa regra de negócio. Uma vez que algum parâmetro estiver ausente, então os valores padrão serão utilizados.

Agora vamos assinar nosso método com a classe Request, em seguida, acessamos o método input passando como parâmetro o nome da nossa query string, conforme exemplo abaixo.

    public function index(Request $request)
    {
        $product= $request->input(product);
    }

O método input recebe um valor default no segundo parâmetro, assim conseguimos garantir que se um valor não for informado, então podemos substituir por um padrão.

Veja o nosso exemplo completo abaixo.

    public function index(Request $request)
    {

        $product = $request->input('product', 'no name');
        $price   = $request->input('price', 0.00);
        $amount  = $request->input('amount', 0);

        $data = [
            'product_info' => [
                'product'   => $product,
                'price'     => $price,
                'amount'    => $amount
            ]
        ];
        return response()->json($data, 200);
    }

Podemos utilizar o método has da classe Request para saber se um parâmetro foi informado ou não, permitindo que regras extras sejam implementadas. Veja um exemplo de utilização.

        if ($request->has('price')) {
            $price = number_format($price, 2, ',', '.');
        }

Você pode obter mais exemplos na documentação oficial em https://laravel.com/docs/8.x/requests#retrieving-input.

Vamos ficando por aqui, até a próxima.

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.

Deixe um comentário