Receber parâmetros via get com Laravel

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

PHP Moderno: Criando uma aplicação com área administrativa

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 String Valor da URL Valor padrão
product mouse no name
price 19.90 0.00
amount 15 0

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.